1. 容器间通信
1.1 通过IP
如果两个容器使用的是同一个网络(IP处于同一网段),容器间自然是可以通信的;
如果两个容器使用的不是同一个网络,假设container01使用my_net01,而container02使用my_net02
,可以通过如下命令来使容器间相互通信:docker network connect my_net02 container01
1.2 通过DNS Server
一般docker daemon默认会内嵌一个DNS Server,所以在启动容器时可以设定容器名然后容器间通过容器名实现互访,不过这种方式只限定于用户自建的网络。
1.3 容器joined
这种方式可以使多个容器间共享一个网络栈,比如:
docker run -d --name my_container01 <docker_image02>
docker run -d --network=container:my_container01 --name my_container02 <docker_image02>
2. Docker容器与外网的通信
2.1 容器访问外网
通过IPTABLES NAT伪装(MASQUERADE)实现
2.2 外网访问容器
端口映射或者共享网络栈实现