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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

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

Q&A

解決済

3回答

2312閲覧

Dockerfileで環境を整えてWEBページを作成しブラウザからアクセスしたい

sususu

総合スコア99

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

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

0グッド

0クリップ

投稿2019/03/23 12:52

Dockerfile生成→イメージファイル生成→コンテナ生成→WEBページ生成
と上記の順序でWEBページを作成しましたがアクセスると「このサイトにアクセスできません xxx.xxx.xxx.xxxで接続が拒否されました」と表示されてしまいます。

どうしたら表示できるようになりますでしょうか?
どなたかご教授お願いいたします。

環境

CentOS Linux release 7.6.1810 (Core) Docker version 1.13.1, build 07f3374/1.13.1

dockerfile

FROM centos:7 MAINTAINER test RUN yum -y install httpd CMD ["/usr/sbin/httpd", "-DFOREGROUND"] EXPOSE 80

dockerfile 実行

docker build -t httpd:latest .

docker images 確認

REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 518fde346076 About a minute ago 317 MB docker.io/centos 7 9f38484d220f 8 days ago 202 MB

コンテナ生成

docker run --name httpd_container -p 80:80 -it httpd:latest /bin/bash

上記までやった状態でホストOSのIPアドレスxxx.xxx.xxx.xxx:80とブラウザに売ってもアクセスできない状態です。

ホストOSの方のapacheは止めているのは確認済みです。
どなたかご回答していただければ幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

docker run の引数 /bin/bash で Dockerfile の CMD を上書きしているからだと思います。

投稿2019/03/23 13:31

TaichiYanagiya

総合スコア12146

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

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

sususu

2019/03/23 13:50

ご回答ありがとうございます。 この場合は/bin/bashも起動させておかないとコンテナは落ちてしまいますか?解決策としてはDockerfileにもう一行CMD[bin/bash]などつけ足せばよいのでしょうか? 質問ばかりで申し訳ありませんがよろしくお願いします。
TaichiYanagiya

2019/03/23 15:40

httpd をフォアグラウンドで起動しているので、コンテナは起動したままです。
guest

0

ベストアンサー

そもそもの前提としまして、docker run 時に

docker run <イメージ名> コマンド

このように「コマンド名」を実行すると、Dockerfile の CMD 命令は無視されます。
つまり、今回の httpd イメージの中には apache のパッケージが入っていますが、 /bin/bash を実行する( apache は動作していない)コンテナとして動いてしまいます。

おそらく意図としては、常に apache を起動したいのだと思いますので docker run 時に -d (デタッチド・モードで動作する)オプションをつけてみてはいかがでしょうか。そうしますと、バックグラウンドで /usr/sbin/httpd -dFOREGROUND を実行しつづけるコンテナを起動できます。

docker run -d -p 80:80 -it httpd:latest

投稿2019/04/02 01:07

zembutsu

総合スコア1584

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

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

sususu

2019/04/06 00:40

ご回答ありがとうございます。 コマンドrunするときにコマンドを指定しないでも大丈夫なのですね。 試してみたいと思います。 ご回答ありがとうございました!!
guest

0

1024未満のポートは特権ユーザーでないとBindできないので、sudoを使うか、

sudo docker run --name httpd_container -p 80:80 -it httpd:latest /bin/bash

ホスト側のポート番号を1024以上すると解決しませんか?

docker run --name httpd_container -p 8080:80 -it httpd:latest /bin/bash

投稿2019/03/23 13:21

moonphase

総合スコア6621

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

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

sususu

2019/03/23 13:35

ご回答ありがとうございます。8080は一度試してみたのですができませんでした????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問