2017-05-22 26 views
2

私はdockerの初心者で、dockerfilesを作成する方法を理解しようとしています。同じことをしようとしたとき 私はCMDの一部は、常に私を混同しているDockerfileの作成に関する問題

FROM debian 
RUN apt-get update && apt-get upgrade -y 
RUN apt-get install apache2 -y 
COPY ./index.html /etc/www/html/ 
CMD service apache2 start && /bin/bash 

このサンプル・ファイルを作成し、私はいくつかの実行中のコマンドがあることを我々は確認する必要がありますことをどこかで読ん主な理由/ binに/ bashのを使用しています私たちがそれを持ってくるとき、ドッカーの画像で。私はイメージを実行するためにこれを使用します: -

docker run -t -p 5000:8080 --name myfinal 912ccd578eae 

私はイメージのIDを使用しています。あなたが見ることができるように、私は初心者であり、詳細の細部までも助けます。

+0


だから、この(CMD付き)は同じですか? – Robert

答えて

2

apache2のための通常のCMD

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

そのようにする必要があります、あなたは、フォアグラウンドプロセスの実行を維持するために「bashの」トリックを使用する必要はありません。
終了シグナルがあれば、apache2プロセスに正しく影響し、bashは正しく影響しません。

ここではENTRYPOINTは不要です:Dockerは、デフォルトのエントリポイント、/bin/shを維持します。あなたの疑問を明確にしてくださいすることができ

/bin/sh -c “apachectl -D FOREGROUND” 
+0

このトピックの良い読書:https://deninet.com/blog/1585/docker-scratch-part-3-entrypoints-and-ports – VonC

+0

マイナーノート:イメージをビルドするときに、イメージに ' -tスイッチ:例えば'dockerビルド-t my-image/path/to/Dockerfile'です。 'docker run -t -p 5000:8080 --name myfinal my-image'を使用して実行することができます。 – tgallacher

関連する問題