Docker支持自定义容器的主机名和DNS配置。实际上,容器中的主机名和DNS配置信息都是通过系统文件维护的
/etc/resolv.conf
/etc/hostname
/etc/hosts
当启动容器时,使用mount命令即可查看3个文件的挂载情况,其中/etc/resolv.conf
默认会与宿主机/etc/resolv.conf
内容保持一致。而/etc/hosts
文件默认仅记录容器自身的地址和名称,/etc/hostname
则仅记录容器的主机名。
自Docker 1.2.0开始,支持在容器中直接编辑/etc/hosts
、/etc/hostname
、/etc/resolv.conf
,但这些修改都是临时的只能在运行的容器中保留,当容器终止或重启时就会消失,也不会被docker commit提交。
因此,如果用户需要自定义容器的配置,可以在创建或启动容器时通过参数指定。
-h或--hostname:设定容器主机名,将会写入/etc/hostname和/etc/hosts,该设置只能在容器内看到,也不会通过docker ps显示
--link CONTAINER_NAME:ALIAS
:记录其他容器主机名到/etc/hosts
--dns=IP_ADDRESS
:添加DNS服务器到/etc/resolv.conf
--dns-search=DOMAIN
:指定容器的搜索域,当设定搜索域为.example.com时,在搜索为host的主机时,DNS也会搜索host.example.com