DockerコンテナでDNSを継続的に作成する[閉じる]

DockerコンテナでDNSを継続的に作成する[閉じる]

私は編集して/etc/resolv.conf入れたコンテナ1を持っていますnameserver 8.8.8.8ping google.com素晴らしい作品。ただし、次を使用してDockerコンテナを再起動するときは、それを永久に作成する必要があります。

sudo docker restart container1

私のコンテナを介してgoogle.comをpingすることはできません。

メモ:

私は彼らが3-7年前にここに投稿したことを試しました。これはうまくいきません。私のUbuntuのバージョンは18.04です。

ベストアンサー1

下で述べたようにDNSサービス、コンテナはデフォルトでホストからresolv.confファイルを継承します。

[root@testvm ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

[root@testvm ~]# docker run -it ubuntu bash

root@a0a0d88f6db8:/# mount|grep resolv.conf
/dev/mapper/centos-root on /etc/resolv.conf type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

root@79c567a830b4:/# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

コンテナ内にDNSネームサーバー設定を追加するには、次の2つのオプションがあります。

  1. ホストのresolv.confファイルにDNSネームサーバーを追加します。
  2. --dnsDNSネームサーバーを明示的に指定する1つ以上のオプションでコンテナを起動します。

--dns使用しているオプションは次のとおりです。

[root@testvm ~]# docker run -it --dns 8.8.8.8 --dns 8.8.4.4 ubuntu bash
root@3ae155186997:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

以下のnginxイメージに示すように、このオプションは再起動後も保持されます。

[root@testvm ~]# docker run -d -p 8080:80 --dns 8.8.8.8 --dns 8.8.4.4 nginx
97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36

[root@testvm ~]# docker exec -it 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36 bash

root@97f76bedfad8:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

root@97f76bedfad8:/# exit
exit

[root@testvm ~]# docker restart 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36
97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36

[root@testvm ~]# docker exec -it 97f76bedfad8173bb38e4e83f898b61be6c8587775736576d09c94ebaf5d5d36 bash
root@97f76bedfad8:/# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

おすすめ記事