「docker build」中にDockerイメージ内の/etc/hostsファイルを更新する方法 質問する

「docker build」中にDockerイメージ内の/etc/hostsファイルを更新する方法 質問する

/etc/hosts「docker build」中にファイルを更新したいです。

Dockerfile に以下の行を追加しましたが、/etc/hostsファイルは更新されず、エラーも発生しません。

RUN echo "192.168.33.11    mynginx" >> /etc/hosts

更新する必要があります/etc/hosts。これについて誰か提案できますか?

ベストアンサー1

より新しいバージョンのdockerでは、docker-composeとそのextra_hosts指令


ホスト名マッピングを追加します。docker runクライアント--add-hostパラメータ(docker 1.8 ではすでに利用可能になっているはずです)。

extra_hosts:
  - "somehost:162.242.195.82"
  - "otherhost:50.31.209.229"

つまり、/etc/hostsコンテナをビルドするときではなく、実行するときにコンテナを変更します。


Docker 17.x以降では、docker build --add-host言及された下にしかし、問題 34078そしてこの答え:

ビルド中の機能--add-hostは、ビルド中にホストをオーバーライドできるように設計されていますが、その構成をイメージ内に保持することはできません。

これらのリンクは、目の前の問題に対処するための戦略を示しています。

  • 内部DNSを実行します。デーモンで使用するデフォルトのDNSサーバーを設定できます。これにより、起動されたすべてのコンテナは、デフォルトで構成されたDNSを自動的に使用します。
  • docker-compose.ymldocker compose を使用して、開発者に提供します。docker
    compose ファイルを使用すると、コンテナーの起動時に使用するすべてのオプションを指定できるため、開発者は docker compose up を実行するだけで、設定する必要のあるすべてのオプションを使用してコンテナーを起動できます。

これらのソリューションでは、docker-compose回答の前半で提案された方法とそのextra_hosts指示を使用することでメリットを得ることができます。

おすすめ記事