我知道如何创建具有 DNS 设置的新 Docker-machine
docker-machine create -d virtualbox --engine-opt dns=8.8.8.8 my_machine
但是已经存在一个“默认”的虚拟机,所以是否有一种方法可以更改它的DNS?
我在网上阅读了使用boot2docker完成此操作的方法,但该工具已被弃用,docker-machine已取代它。不幸的是,它是如此新的工具,我在网上没有找到太多相关信息。
我知道如何创建具有 DNS 设置的新 Docker-machine
docker-machine create -d virtualbox --engine-opt dns=8.8.8.8 my_machine
但是已经存在一个“默认”的虚拟机,所以是否有一种方法可以更改它的DNS?
我在网上阅读了使用boot2docker完成此操作的方法,但该工具已被弃用,docker-machine已取代它。不幸的是,它是如此新的工具,我在网上没有找到太多相关信息。
前往 ~/.docker/machine/machines/default/config.json
并将您自己的DNS服务器添加到HostOptions/EngineOptions/Dns
,然后重新启动docker machine。
{
"HostOptions": {
"Driver": "",
"Memory": 0,
"Disk": 0,
"EngineOptions": {
"ArbitraryFlags": [],
"Dns": ["192.168.99.1","8.8.8.8","8.8.4.4"], <-- set it here
"GraphDir": ""
}
}
编辑:
在新版的docker-machine中,config.json
中的DNS设置似乎被忽略了。唯一有效的方法是添加以下行(将其编辑以符合您的需求):
"${DOCKER_MACHINE}" ssh "${VM}" "sudo sed -i.bkp '/--label provider=virtualbox/a --dns 8.8.8.8\\\n--dns 8.8.4.4' /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"
之后
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
在脚本start.sh
中, 每次启动Docker Quickstart终端时都会运行该脚本。
然后关闭虚拟机(如果正在运行), 并打开一个新的Docker Quickstart终端实例。
config.json
文件中,“Dns” 值为 null
。将其替换为仅包含 8.8.x.x 服务器的列表对我有用。我猜测只有在本地设置了自定义 DNS 条目时才需要 192.168.99.1。 - amacleoddocker-machine provision name
命令应用任何配置更改,无需重启计算机!(注:name是指Docker Machine的名称) - nathanleclaire/etc/resolv.conf
文件。这与VirtualBox网络设置有关。它会修改Docker守护进程本身使用的DNS服务器。 - nathanleclaire["8.8.8.8", "8.8.4.4"]
,重新启动Docker机器,重启Docker服务,然后再次重新启动Docker机器,接着重新进行配置,最后再次重启。该机器不可思议地尝试使用10.0.2.3
作为DNS服务器。 - Caleb Fenton