
我们需要创建一个 Docker 网络。可以使用 docker network create 命令来创建一个新的网络。例如,创建一个名为 my-network 的 bridge 网络:
docker network create my-network
创建好网络后,接下来就可以启动容器并将其连接到这个网络上。
当创建容器时,可以使用 --network 选项来指定要加入的网络。例如,启动一个 Nginx 容器并将其加入 my-network 网络:
docker run -d --name web --network my-network nginx
同样地,我们也可以启动另一个容器并加入同一个网络:
docker run -d --name db --network my-network mysql
至此,两个容器都已经加入到同一个 Docker 网络中。
在同一个 Docker 网络中,容器之间可以通过容器名进行通信。例如,在 web 容器中可以使用以下命令访问 db 容器:
curl http://db
这里,db 就是 MySQL 容器的容器名。Docker 会自动解析容器名并将流量路由到正确的容器。
除使用容器名,我们也可以使用容器的 IP 地址进行通信。可以使用以下命令查看容器的 IP 地址:
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db
在 web 容器中使用这个 IP 地址访问 db 容器:
curl http://172.18.0.3
需要注意的是,容器的 IP 地址可能会随时发生变化,所以使用容器名通常更加可靠和方便。
需要跨主机进行容器通信,可以使用 overlay 网络。overlay 网络可以让不同主机上的容器互相访问。具体的使用方法请参考 Docker 的官方文档。
使用 Docker 网络可以非常方便地实现容器之间的通信和交互。无论是同一主机上的容器还是跨主机的容器,只要将它们加入到同一个 Docker 网络中,就可以使用容器名或 IP 地址进行访问和通信。这大大简化容器编排和管理的复杂度。