docker-composeで立ち上げたコンテナ内のコンテンツにアクセスする方法
- 評価
- クリップ 0
- VIEW 3,810
前提・実現したいこと
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.html’
100%[=======================================================================>] 182 --.-K/s in 0s
2017-07-12 07:35:55 (25.6 MB/s) - ‘index.html’ saved [182/182]
上記のように表示されました。
ブラウザからhttp://localhost:8080/index.html
にアクセスしてみましたが、ダメでした。
なので、ホストPC:8080 → CentOS:80
の問題なのかと...
何が問題なのでしょうか...
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
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で質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる