在容器迁移的时候,Docker在每次开始时会有一个不同的IP,数据成功迁移后,你重新启动你的容器的时候,你需要更新你下你的信息,例如让你的应用容器知道你的数据库更换了ip地址。当然你可以使用etcd等来同步配置,但是还是有点时间成本的。让我告诉你一个懒人的办法。设置一个DNS,使用最简单的dnsmasq,它同时也为Docker提供DHCP服务。
dnsmasq 配置文件
1 2 3 4 5 6 7 8 |
$ > cat /etc/dnsmasq.conf listen-address=0.0.0.0 interface=lo interface=eth0 interface=docker0 resolv-file=/etc/resolv.dnsmasq.conf conf-dir=/opt/docker/dnsmasq.d # docker run -d -dns 172.17.42.1 -name db -h db db_image $ > docker run -d -dns 172.17.42.1 -name app -h app app_image |
当我们更换了容器,我们只需要更新一些主机配置和DNS服务
1 2 3 4 |
$ > container='db' $ > new_ip=$(docker inspect $container | grep IPAddress | cut -f4 -d'"') $ > echo "host-record=$container,$new_ip" > /opt/docker/dnsmasq.d/0host_$container $ > service dnsmasq restart |
好了,现在我们可以在配置中简单的使用db作为主机 阅读原文 »