Docker 容器不仅仅是隔离——它们通常用于管理仍然需要直接相互通信的进程。但是,为了进行通信,您通常需要知道每个容器的 IP 地址,您可以通过一些命令找到该地址。
考虑使用用户定义的网桥
Docker 网络有点复杂。默认启动的容器将被放置在默认的“桥接网络”中,并且可以直接与其他容器通信,前提是您拥有它们的私有 IP 地址。可以将其关闭以实现真正的隔离,但默认情况下并非如此。
如果您不想绑定端口,也可以使用此地址与主机操作系统进行通信。这是直接通过 IP 地址访问容器的主要用例,但您可能仍然应该只绑定一个端口(您可以在防火墙中将其与 Internet 关闭)。
但是,IP 地址是短暂的,在容器停止和启动时很容易中断。对于容器之间的通信,Docker 通过用户定义的桥接网络提供了一种解决方案, 如果您有多个容器相互通信,您可能应该使用该解决方案。
添加到非默认网络的容器将能够通过其别名相互访问,这将自动解析为私有 IP。您可以创建新网络,在这些网络中运行容器,并将现有容器连接到网络。然后,您可以使用别名作为主机名访问其他容器;例如,这里的 NGINX 容器可以通过连接字符串访问 MongoDB 实例mongodb://mongohost:27017。
docker network create example
docker run