目前的docker,还没有实现好热备份,一旦退出容器,即使commit到image里再启动那个image,也只不过省了文件状态恢复的时间,却不会省下db启动时分析巨大的数据文件所需的时间。
所以有必要,在不退出容器的情况下,设法让人通过访问Docker主机的某个port来访问到容器里面的某个port。目前有两个方法:
- 在Docker主机里用iptables加个端口转发规则。
sudo iptables -A PREROUTING -t nat -p tcp --dport Docker主机port -j DNAT --to 容器ip:容器port
- 如果是在用VirtualBox里的docker-machine做Docker主机,那么还有一个方法是物理主机上加上个路由使得能够直接访问到容器的ip。
sudo route -n add 容器ip/32 Docker主机ip
这时Docker主机ip是指docker-machine ip default
的结果。这样一来,可以直接访问容器ip:容器port了。
都做过实验,具体的在Docker启动容器时的port公开方式,破除一些含糊的地方