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

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

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

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

Apache

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

Docker

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

Q&A

解決済

1回答

5250閲覧

DockerにApacheの最新をインストールしDockerを起動したい

kknntst2

総合スコア10

CentOS

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

Apache

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

Docker

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

0グッド

0クリップ

投稿2020/08/08 11:42

編集2020/08/08 11:45

Windows10ProにDockerをインストールしています。
Dockerfileを作成し、コンテナを作成しようとしています。
コンテナには「CentOS8」をインストールし、Apacheの最新(2.4.43)をインストールしようとしていますが、インストール&コンテナ起動ができなくて困っています。
Dockerのビルドやrunした際も特にエラーは出ていませんが、runした後、「docker ps -a」で確認すると「status」が「Exited(1)」となっています。
どこが悪いか教えていただけますでしょうか。

#環境
OS:Window10Pro 64bit
バージョン:1903
#Dockerバージョン
Docker version 19.03.8
#Dockerfileの内容
FROM centos:centos8
RUN yum -y install wget
RUN yum -y groupinstall "Development Tools"
RUN yum -y install pcre-devel
RUN yum -y install expat-devel

RUN cd /usr/local/src
RUN wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.7.0.tar.gz
RUN wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.6.1.tar.gz
RUN wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.43.tar.gz

RUN mkdir -p /opt/apr/apr-1.7.0
RUN mkdir -p /opt/apr-util/apr-util-1.6.1
RUN mkdir -p /opt/httpd/httpd-2.4.43

RUN cd /usr/local/src
RUN tar zxvf apr-1.7.0.tar.gz ¥
&& cd apr-1.7.0 ¥
&& ./configure --prefix=/opt/apr/apr-1.7.0 ¥
&& make ¥
&& make install

RUN cd /usr/local/src
RUN tar zxvf apr-util-1.6.1.tar.gz ¥
&& cd apr-util-1.6.1 ¥
&& ./configure --prefix=/opt/apr-util/apr-util-1.6.1 --with-apr=/opt/apr/apr-1.7.0 ¥
&& make ¥
&& make install

RUN cd /usr/local/src
RUN tar zxvf httpd-2.4.43.tar.gz ¥
&& cd httpd-2.4.43 ¥
&& ./configure --prefix=/opt/httpd/httpd-2.4.43 --with-apr=/opt/apr/apr-1.7.0 --with-apr-util=/opt/apr-util/apr-util-1.6.1 --enable-so --enable-mods-shared=all --enable-mpms-shared=all ¥
&& make ¥
&& make install

COPY index.html /var/www/html/

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

#Dockerビルドコマンド
docker build -t test:vertest -f Dockerfile .
docker run -d -p 81:80 --name testpage test:vertest

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

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

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

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

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

yukky1201

2020/08/08 13:19

httpd-2.4.46.tar.gzで試したらどうです? (2.4.43は無かったです)
kknntst2

2020/08/08 13:53

ありがとうございます。 ご指摘されたように2.4.43は無くなっていました。。。 変更して確認してみます。
guest

回答1

0

ベストアンサー

次のコマンドを実行すると原因がわかります:

console

1docker logs testpage

参考: docker logs | Docker Documentation

おそらく、次のようなエラーが表示されているものと思われます:

console

1/usr/sbin/httpd: no such file or directory"

なお、こちらで試したところ、httpd-2.4.43.tar.gz が入手できなかったので
httpd-2.4.46.tar.gz で試しました

Dockerfile の通りに実行すると、Apache の実行バイナリーは次の位置となるでしょう:

bash

1/opt/httpd/httpd-2.4.46/bin/httpd

また、Dockerfile の中で cd を単体で使っても効果はありません

Dockerfile reference | Docker Documentation

Note that each instruction is run independently,
and causes a new image to be created

  • so RUN cd /tmp will not have any effect on the next instructions.

作業ディレクトリーを変更したいときは WORKDIR 命令を使います

参考: WORKDIR | Dockerfile reference | Docker Documentation

念のため、ご存知かもしれませんが、Apache は Docker Hub に公式イメージがありますので、
なるべくイメージを自作しなくてよい要件定義にした方がメリットが大きいです
httpd Tags - Docker Hub

投稿2020/08/08 13:18

編集2020/08/08 14:30
y_shinoda

総合スコア3272

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

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

kknntst2

2020/08/08 13:56

ご回答ありがとうございます。 ご指摘されたように2.4.43は無くなっていました。。。 また、「CD」については知りませんでした。ありがとうございます。「WORKDIR」に変更して試してみます。 >念のため、ご存知かもしれませんが、Apache は Docker Hub に公式イメージがありますので、 >なるべくイメージを自作しなくてよい要件定義にした方がメリットが大きいです ありがとうございます。 公式イメージがあるのは知っているのですが、色々と訳があり使用することが難しいのです。。。 「2.4.46」「WORKDIR」に修正して、試してみます。
kknntst2

2020/08/08 14:18

試してみました。 Docker run時に以下のエラーが発生してしまいました。。。 ================================== C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/usr/sbin/httpd\": stat /usr/sbin/httpd: no such file or directory": unknown. ================================== 「usr/sbin/httpd」が存在しないということでしょうか。 となると、開始するコマンドがNGということになりますでしょうか。
y_shinoda

2020/08/08 14:31

回答に実行バイナリーの位置を追記しておきました
kknntst2

2020/08/08 14:36

申し訳ないです。 ありがとうございます。試してみます。
kknntst2

2020/08/08 14:47

ありがとうございます。出来ました!! ただ、「localhost:81」で確認するとdefaultページの「It wroks!」のページが表示されてしまいます。 想定では、「/var/www/html/」にコピーした「index.html」が表示されると思っていました。 コピー先が異なるのでしょうか。
y_shinoda

2020/08/08 14:57

ドキュメントルートは次の位置です /opt/httpd/httpd-2.4.46/htdocs/
kknntst2

2020/08/08 15:30

/opt/httpd/httpd-2.4.46/htdocs/にコピーしましたら、確認出来ました。 色々とありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問