当前位置: 首页 > 知识库问答 >
问题:

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

权浩邈
2023-03-14

本页和本答案都引用了IP地址172.22.0.3。通过RFC 1918,它在专用网络范围172.16.0.0-172.31.255.255内。它也在我自己的代码中(在docker中运行),但我忘记了为什么。

是Docker默认吗?你能找到推荐人吗?

共有1个答案

阮喜
2023-03-14

作为实现细节,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-internal IP地址在应用程序的某个地方被硬编码,那么这可能是一个错误。如果您在其他地方重新启动容器,则无法保证使用相同的地址或甚至相同的网络。这些地址也无法从其他主机访问;如果Docker运行在VM中,则从VM外部;甚至来自同一主机上的非容器进程(本机Linux系统除外)。

 类似资料:
  • 我有一个简单的脚本,每2秒打印一次hello。 我有一个超简单的docker文件运行这个脚本。 首先我建立docker映像: 现在,我使用选项运行它,它按预期工作。 但是当我以分离模式运行它,然后尝试查看日志时,我什么也看不到。

  • 问题内容: 当我调用Go模板函数以输出HTML时,它将显示。 样例代码: http://play.golang.org/p/tfuJa_pFkm 输出: 问题答案: “ ZgotmplZ”是一个特殊值,指示运行时不安全内容到达CSS或URL上下文。该示例的输出将是: 您可以向模板funcMap添加安全和attr函数: 包主 输出将如下所示: 您可能需要定义一些其他函数,这些函数可以将字符串转换为t

  • 以前它工作正常,但现在一切都很慢,而且我没有看到TextField,在层次结构中选择游戏对象时,在编辑器窗口中显示它需要将近5秒的时间。 在此之前,一切都很快,并在编辑器窗口中显示整个层次结构。 现在它是空的: 我从这个问题中得到了答案: 可通过计算机搜索的

  • 问题内容: 注意:我知道该方法。 在下面的代码示例中,我不明白为什么在方法抛出,但不是在方法。 问题答案: 原因如下:正如中所说: 此类的迭代器和方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间以任何方式对列表进行结构修改,除非通过迭代器自己的remove或add方法,否则迭代器将抛出。 该检查是在迭代器的方法中完成的(如你在stacktrace中所看到的)。但是,next()只有在传递

  • 问题内容: 为了了解Docker网络,Docker会自动创建以下网络: 我了解到, 桥接网络 代表了所有Docker安装中存在的docker0网络(从链接中引用)。 有人可以帮助我了解其他网络, 托管 和 无 托管 ,如果可能的话,提供示例。 问题答案: Docker 默认支持3个网络 : 1)无 : 此模式 不会为容器配置任何IP , 也无法访问外部网络以及其他容器 。它具有回送地址,可用于运行

  • 我以为我了解Docker。我把它理解为一种打包软件的方法,其中包含很多依赖项。。基本上创建一个小世界,在这个小世界里,软件的每一件事情都会得到处理。然后我在DockerHub上偶然发现了这个 https://hub.docker.com/_/busybox/ 这是BusyBox的一个映像,它是一个用于嵌入式系统的小型Linux二进制文件。然后上面的评论说: Busybox是真棒:)到目前为止,在整