Docker 網路 配置dns

2021-10-22 13:47:50 字數 2389 閱讀 7746

啟動的時候加–dns=ip_address;

守護程序啟動引數中新增docker_opts="–dns 8.8.8.8" ;

在/etc/docker/deamon.json中新增dns資訊(與守護程序引數會衝突不能同時新增。);

使用宿主機的/etc/resolv.conf檔案;

怎樣為docker提供的每乙個容器進行主機名和dns配置,而不必建立自定義映象並將主機名寫 到裡面?它的訣竅是覆蓋三個至關重要的在/etc下的容器內的虛擬檔案,那幾個檔案可以寫入 新的資訊。你可以在容器內部執行mount看到這個:

$ mount

.../dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...

/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...

/dev/disk/by-uuid/1fec...ebdf on /etc/resolv.conf type ext4 ...

...

options

description

-h hostname or --hostname=hostname

在該容器啟動時,將hostname設定到容器內的/etc/hosts, /etc/hostname, /bin/bash提示中。

–link=container_name or id:alias

在該容器啟動時,將alias和container_name/id對應的容器ip新增到/etc/hosts. 如果 container_name/id有多個ip位址 ?

–dns=ip_address…

在該容器啟動時,將nameserver ip_address新增到容器內的/etc/resolv.conf中。可以配置多個。

–dns-search=domain…

在該容器啟動時,將domain新增到容器內/etc/resolv.conf的dns search列表中。可以配置多個。

–dns-opt=option…

在該容器啟動時,將option新增到容器內/etc/resolv.conf中的options選項中,可以配置多個

如果docker run時不含--dns=ip_address…,--dns-search=domain…, or--dns-opt=option…引數,docker daemon會將copy本主機的/etc/resolv.conf,然後對該copy進行處理(將那些/etc/resolv.conf中ping不通的nameserver項給拋棄),處理完成後留下的部分就作為該容器內部的/etc/resolv.conf。因此,如果你想利用宿主機中的/etc/resolv.conf配置的nameserver進行網域名稱解析,那麼你需要宿主機中該dns service配置乙個宿主機內容器能ping通的ip。

如果宿主機的/etc/resolv.conf內容發生改變,docker daemon有乙個對應的file change notifier會watch到這一變化,然後根據容器狀態採取對應的措施:

注意: docker daemon監控宿主機/etc/resolv.conf的這個file change notifier的實現是依賴linux核心的inotify特性,而inotfy特性不相容overlay fs,因此使用overlay fs driver的docker deamon將無法使用該/etc/resolv.conf自動更新的功能。、

$ sudo docker run --hostname 'myhost' -it centos

[root@myhost /]

# cat /etc/hosts

172.17.0.7 myhost

$ sudo docker run -it --dns=192.168.5.1 centos

[root@6a38049c9052 /]

# cat /etc/resolv.conf

nameserver 192.168.5.1

$ sudo docker run -it --dns-search=www.domain.com centos

[root@ae0e9e99596f /]

# cat /etc/resolv.conf

nameserver 192.168.4.1

search www.mydomain.com

root@node-7:~# cat /etc/docker/daemon.json

參考連線:

docker高階網路配置

docker container dns配置介紹和原始碼分析

docker網路配置

檢視docker網路 docker network ls 檢視bridge 的ip docker inspect id 啟動乙個映象名字為aaa 設定網路host 網路預設為 bridge docker run itd name bbb centos bash host 網路ip和虛擬機器一樣 我們...

Docker網路配置

1 在沒有任何docker容器啟動時的原始宿主機網路如下 1.回環 2.物理網絡卡 3.4虛擬機器的 5.docker的網絡卡 2 啟動tomcat容器 docker run d p name tomcat test tomcat p是隨機埠 檢視當前已經有乙個啟動中的容器,是我們制定的tomcat...

Docker 網路配置

docker 為我們提供了多種型別的網路模式,我們可以根據自己的需求使用系統預設的網路或者建立自己的網路。在我們安裝完 docker enginee 後,會自動生成3種預設的網路模式。我們可以執行命令檢視 bridge 使用docker 0 網路,containers只能在乙個host上面進行通訊。...