web-dev-qa-db-ja.com

Docker CentOSイメージがhttpdを自動起動しない

ApacheとPHPプログラムを使用して単純なDockerイメージを実行しようとしています。実行すると正常に動作します。

docker run -t -i -p 80:80 my/httpd /bin/bash

次に、手動でApacheを起動します

service httpd start

ただし、実行時にhttpdを自動的に起動することはできません

docker run -d -p 80:80 my/httpd

Apacheが起動すると、コンテナが存在します。 DockerファイルでさまざまなCMDsを試しました

CMD /etc/init.d/httpd start
CMD ["service" "httpd" "start"]
CMD ["/bin/bash", "/etc/init.d/httpd start"]
ENTRYPOINT /etc/init.d/httpd CMD start
CMD ./start.sh

start.shは

#!/bin/bash
/etc/init.d/httpd start

ただし、Apacheの起動後に毎回dockerインスタンスが存在します

私は本当に明らかなものを見逃していますか?

23
dwitz

Apache(httpd)を直接実行する必要があります-init.dスクリプトを使用しないでください。

2つのオプション:

  1. フォアグラウンドでApacheを実行する必要があります:/usr/sbin/Apache2 -DFOREGROUND ...(またはCentOSの/ usr/sbin/httpd)
  2. /sbin/initをエントリポイントとして実行して、すべてのサービス(自動実行として構成されたApacheを含む)を開始する必要があります。

この素敵な投稿を参照してください: http://www.kstaken.com/blog/2013/07/06/how-to-run-Apache-under-docker/

20
Jiri

CentOSでフォアグラウンドでApacheを実行するには、Dockerfileの最後にこの行を追加します

ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
13
Hemerson Varela