我有两个码头集装箱。容器一名为5extraextranodes_plc1_1,并在一个名为test_net的桥接网络上与坞组成一起运行。
集装箱2是建立和运行以外的码头-组成。容器2中有一个Python3脚本。在这个Python3脚本中,我希望能够查找5extraextranodes_plc1_1容器的IP地址。
我最初尝试在Python代码中使用subprocess.checkout()来运行docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 5extraextranodes_plc1_1命令。但这给了我一个错误FileNotFoundError: Errno 2没有这样的文件或目录:'docker‘。
所以现在我尝试使用Python3.6脚本中的Docker来完成这个任务。我正在运行以下代码:
client = docker.from_env()
container = client.containers.list(filters={"name": "5extraextranodes_plc1_1"})
ip_add = container.attrs['NetworkSettings']['IPAddress']不幸的是,这段代码给了我错误: docker.errors.DockerException: Error,而获取服务器API版本:(‘连接中止.’,FileNotFoundError(2,‘没有这样的文件或目录’)的语句client = docker.from_env()。
如何从同一网络上的容器2中查找5extraextranodes_plc1_1容器的IP地址?
注意:I目前正在网络test_net (与容器1相同的网络)上运行Container2。我也尝试过在网络host模式下运行它。都失败了。
发布于 2021-04-13 07:54:47
如果您不想使用公共网络和Docker DNS,如@larsks所述:
默认情况下,容器不允许在主机系统上更改内容,这是码头的核心概念。但是您可以显式地允许访问坞袜子:
docker run -v /var/run/docker.sock:/var/run/docker.sock container2
但请记住:这个集装箱获得了超级大国,如果必要的话,应该得到很好的保护。
如果您有进一步的问题,请从container2提供Dockerfile
https://stackoverflow.com/questions/67067796
复制相似问题