作为实现细节,Docker 为创建的每个 Docker 网络分配该 IP 地址范围的一部分。在该地址范围内,通常 .1 地址是主机,然后为连接到网络的每个容器按顺序分配地址。
例如,在您链接到的答案中,Docker 很可能会将 172.22.0.0/16 分配给文件中列出的网络docker-compose.yml。那么 172.22.0.1 将是主机,172.22.0.2 将是 中的第一个容器docker-compose.yml,172.22.0.3 将是第二个 ( db)。当出现错误时,例如连接到 时db:27017,解析的地址可能会在错误消息中打印出来。
如果 Docker 内部 IP 地址被硬编码在应用程序中的某个位置,则可能是一个错误。如果您在其他地方重新启动容器,则无法保证会使用相同的地址甚至相同的网络。其他主机也无法访问这些地址;从虚拟机外部,如果 Docker 在虚拟机中运行;甚至来自同一主机上的非容器进程(本机 Linux 系统除外)。
Docker 文档中的Compose 中的网络是一个很好的实用参考。请注意,它根本没有描述此 IP 分配,因为它主要是实现细节。独立容器网络中的示例显示了用于转储 Docker 网络详细信息的低级诊断命令;虽然这些通常没什么用,但它们确实显示 Docker 在 172.{16...31} 保留范围内分配 /16 网络。
| 归档时间: |
|
| 查看次数: |
3317 次 |
| 最近记录: |