web-dev-qa-db-ja.com

RUNでDockerfileから/ etc / hostsファイルに書き込めません

私はかなりシンプルな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ページには、オープンとクローズの両方で多くの問題があるようです。

9
dlyk1988

私の質問に対する更新を書いた後、私はgithubで開かれた「問題」をもう1度見直すことにしました。結局、回避策が実装されました:

docker run ... --add-Host='server:0.0.0.0' ...

コンテナーを開始するときに「--add-Host ...」引数を使用すると、hostsファイルを変更できます。

7
dlyk1988

これは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
12
jonatan