/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.yml
docker compose を使用して、開発者に提供します。docker
compose ファイルを使用すると、コンテナーの起動時に使用するすべてのオプションを指定できるため、開発者は docker compose up を実行するだけで、設定する必要のあるすべてのオプションを使用してコンテナーを起動できます。
これらのソリューションでは、docker-compose
回答の前半で提案された方法とそのextra_hosts
指示を使用することでメリットを得ることができます。