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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

5275閲覧

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

tarotarosu

総合スコア114

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/07/11 09:47

編集2017/07/12 09:33

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

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

yml

1mysql: 2 image: mysql:5.7.11 3 environment: 4 - MYSQL_ROOT_PASSWORD=root 5apache-php: 6 image: php:5.6.19-apache 7 ports: 8 - "80:80" 9 volumes: 10 - ./src:/var/www/html 11 links: 12 - mysql:db 13phpmyadmin: 14 image: phpmyadmin/phpmyadmin:4.5.3.1-1 15 ports: 16 - "8080:8080" 17 links: 18 - mysql:db 19

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の

rb

1# 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のポートフォワード部分を下記のようにし、

rb:Vagrantfile

1config.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の問題なのかと...
何が問題なのでしょうか...

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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 で確認ください。

投稿2017/07/13 15:09

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問