同一個Docker鏡像能夠啓動不少個容器,它們的主機名並不同,可知主機名並非被寫入鏡像中.docker
實際上容器中/etc目錄下有3個文件是容器啓動後被虛擬文件覆蓋掉的,分別是bash
/etc/hostnamedns
/etc/hostsit
/etc/resolv.conf容器
經過在容器中運行mount命令能夠查看配置
這種能解決主機名的問題,同時也能讓DNS及時更新.因爲這些文件的維護方法隨着docker版本演進而不斷變化,所以儘可能不修改這些文件,而是經過docker提供的參數進行相關設置方法
-h HOSTNAME 或者 --hostname=HOSTNAMEhosts
設置容器的主機名,此名稱會寫在/etc/hostname和/etc/hosts文件中,也會在容器的bash提示符中看到.可是在外部,容器的主機名是沒法查看的,不會出如今其餘容器的hosts文件中,使用docker ps命令也查看不到.此參數是docker run命令的參數,而非docker daemon的啓動參數文件
--dns=IP_ADDRESSco
爲容器配置DNS,寫在/etc/resolv.conf中,該參數能夠在docker daemon啓動的時候設置,也能夠在docker run 時設置
[注意]
以上3個文件的修改不會被docker commit保存,也就是不會保存在鏡像中,重啓容器也會致使修改失效