私はかなりシンプルなDockerfileを使用してDockerイメージを作成しています。 Dockerfile内に次のコマンドがあります。
RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts
この時点ではイメージの作成が停止しないため、コマンド自体は問題ないようです。
問題は次のとおりです。イメージを実行すると、「/ etc/hosts」内に挿入されているはずの行がそこにありません。
今、私は周りを検索しましたが、バージョン1.2以前のdockerでは、コンテナー内のhostsファイルに問題があることがわかりました。私の場合、現時点で最新のバージョン1.5を使用しています。
何か不足していますか?
更新1:
Dockerのgithubページには、オープンとクローズの両方で多くの問題があるようです。
私の質問に対する更新を書いた後、私はgithubで開かれた「問題」をもう1度見直すことにしました。結局、回避策が実装されました:
docker run ... --add-Host='server:0.0.0.0' ...
コンテナーを開始するときに「--add-Host ...」引数を使用すると、hostsファイルを変更できます。
これはdocker 1.7.0で動作します
RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost
トリックは、使用するのと同じ行にホスト名を追加することです。そうしないと、すべてのRUNコマンドが新しい中間コンテナを開始するため、hostsファイルがリセットされます。たとえば、これは機能しません:
RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost