質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.96%

docker-composeで立ち上げたコンテナ内のコンテンツにアクセスする方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,549

tarotarosu

score 111

前提・実現したいこと

docker-composeで立ち上げたコンテナ内のコンテンツにどのようにアクセスしていいか分かりません。

VagrantでCentOSを入れて、その中でDockerを使用できるようにし、
Docker ComposeによってLAMP環境を構築しました。
docker-compose.ymlを下記のように設定し、docker-compose up -d を実行しました。

mysql:
 image: mysql:5.7.11
 environment:
  - MYSQL_ROOT_PASSWORD=root
apache-php:
 image: php:5.6.19-apache
 ports:
  - "80:80"
 volumes:
  - ./src:/var/www/html
 links:
  - mysql:db
phpmyadmin:
 image: phpmyadmin/phpmyadmin:4.5.3.1-1
 ports:
  - "8080:8080"
 links:
  - mysql:db

docker-compose ps で状態を確認したところ、

      Name                    Command             State           Ports
--------------------------------------------------------------------------------
work_apache-php_1   apache2-foreground            Up      0.0.0.0:80->80/tcp
work_mysql_1        docker-entrypoint.sh mysqld   Up      3306/tcp
work_phpmyadmin_1   /run.sh                       Up      0.0.0.0:8080->8080/tcp

のようになっており、おそらく問題なくコンテナが立ち上がっている状態だと思います。

今、docker-compose.ymlにも記述してあるように、./src/var/www/htmlに割り当て、./src以下にindex.htmlを作成し、ブラウザから表示を確認しようと思っています。
しかし、ブラウザからどのようにアクセスすればindex.htmlの内容を確認できるのかが分かりません。

Vagrantfileの

# config.vm.network "private_network", ip: "192.168.33.10"


部分のコメントアウトは消してあります。
また、

docker inspect -f "{{.NetworkSettings.IPAddress}}" CONTAINER


で、work_apache-php_1のipアドレスを確認し、index.htmlを表示しようとしたが、ダメでした。

どのようにすればdocker-composeで立ち上げたコンテナ内のコンテンツを表示することができるのでしょうか?
かなり根本的なところからわかっていないと思いますが、何か回答を頂けると助かります_(._.)_

 参考記事

XAMPP/MAMPの代わりにDocker ToolboxでLAMP環境を構築する(Docker入門ハンズオン)

 追記

Vagrantfilのポートフォワード部分を下記のようにし、

config.vm.network :forwarded_port, guest: 80, host: 8080, host_ip: "127.0.0.1", id: 'http'

ホストPC:8080 → CentOS:80 → apache:80のような感じで繋ぎ、CentOS上で

wget http://localhost/ --no-proxy


としたところ、

Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 182 [text/html]
Saving to: ‘index.html100%[=======================================================================>] 182         --.-K/s   in 0s

2017-07-12 07:35:55 (25.6 MB/s) -index.htmlsaved [182/182]


上記のように表示されました。

ブラウザからhttp://localhost:8080/index.htmlにアクセスしてみましたが、ダメでした。
なので、ホストPC:8080 → CentOS:80の問題なのかと...
何が問題なのでしょうか...

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

CentOS の 80 番ポートを work_apache-php_1 コンテナの 80 番ポートに転送しているのですよね?
CentOS の IPアドレスが 192.168.33.10 ならば、ホストから http://192.168.33.10/ でアクセスできるはずです。

CentOS のシェル(コマンドプロンプト)から http://localhost/ にアクセスできて、ホストから http://192.168.33.10/ にアクセスできない状況ですので、おそらく、CentOS の firewalld (CentOS 7)または iptables で 80番ポートへの接続が許可されていないのだと思います。

CentOS 7 ならば firewall-cmd --list-all、CentOS 6 以前ならば iptables -nvL INPUT で確認ください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.96%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる