Docker容器间通信

Wed Sep 6, 2017

400 Words|Read in about 1 Min
Tags: docker  
  • 容器每次启动时会分配个一个IP地址,这个IP地址只在宿主主机内部有用,其它主机上的程序无法访问此IP

  • 一台机器上的docker容器之间默认是可以通过分配的IP进行通信的,可以通过启动参数 -icc=false —iptables=true 来关闭互通,严格隔离以提高安全性

  • 虽然每次启动分配的IP可能会变,但启动时加类似 —link redis:db 这样的参数给容器起别名,可以起到DNS作用,原理是在 /etc/hosts 里面映射IP到别名,这样你的程序和其他容器通信就可以不用管IP,用别名,IP变但它不会变

  • link只支持单主机,跨主机link最早的方案是Ambassador(docker远程代理),每台主机启动一个Ambassador容器负责对主机上其它容器的网络转发(socket proxy),后演变成 github.com/gliderlabs/connectable

  • 手动处理容器间通信很麻烦,一般用编排工具:kubernetes、swarm……

See Also

Wed Sep 6, 2017

400 Words|Read in about 1 Min
Tags: docker