为什么我会在docker网络示例中看到172.22.0.3?

为什么我会在docker网络示例中看到172.22.0.3?,docker,ip,Docker,Ip,两者都引用IP地址172.22.0.3。到,这在专用网络范围172.16.0.0-172.31.255.255内。它也在我自己的代码中(在docker中运行),但我已经忘记了原因 这是Docker默认值吗?你能找到一个参考吗?作为实现细节,Docker为每个创建的Docker网络分配部分IP地址范围。在该地址范围内,通常.1地址是主机,然后依次为连接到网络的每个容器分配地址 例如,在您链接到的答案中,Docker很可能会将172.22.0.0/16分配给Docker compose.yml文件中

两者都引用IP地址172.22.0.3。到,这在专用网络范围172.16.0.0-172.31.255.255内。它也在我自己的代码中(在docker中运行),但我已经忘记了原因

这是Docker默认值吗?你能找到一个参考吗?

作为实现细节,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文档中是一个很好的实用参考。注意,它根本没有描述这个IP分配,因为它主要是一个实现细节。中的示例显示用于转储Docker网络详细信息的低级诊断命令;虽然这些通常并不有用,但它们确实显示了Docker在172.{16…31}保留范围内分配/16个网络