Python 3.x Docker SDK:查找容器';谁的IP地址?

Python 3.x Docker SDK:查找容器';谁的IP地址?,python-3.x,docker,docker-compose,subprocess,docker-networking,Python 3.x,Docker,Docker Compose,Subprocess,Docker Networking,我有两个码头集装箱。容器1名为5extranodes\u plc1\u 1,在名为test\u net的网桥网络上与docker compose一起运行 容器2在docker compose外部构建和运行。在容器2中,有一个Python3脚本。在这个Python3脚本中,我希望能够查找5extraNodes\u plc1\u 1容器的IP地址 我最初尝试在Python代码中使用subprocess.checkout()来运行docker-inspect-f'{{range.NetworkSett

我有两个码头集装箱。容器1名为
5extranodes\u plc1\u 1
,在名为
test\u net
的网桥网络上与docker compose一起运行

容器2在docker compose外部构建和运行。在容器2中,有一个Python3脚本。在这个Python3脚本中,我希望能够查找
5extraNodes\u plc1\u 1
容器的IP地址

我最初尝试在Python代码中使用
subprocess.checkout()
来运行
docker-inspect-f'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}5extraextronodes_plc1}/code>命令。但这给了我一个错误FileNotFoundError:[Errno 2]没有这样的文件或目录:“docker”

因此,现在我正试图在Python 3.6脚本中使用Docker SDK来实现这一点。我正在运行以下代码:

    client = docker.from_env()
    container = client.containers.list(filters={"name": "5extraextranodes_plc1_1"})
    ip_add = container.attrs['NetworkSettings']['IPAddress']
不幸的是,此代码为语句
client=docker.from_env()
提供了错误:docker.errors.DockerException:获取服务器API版本时出错:(“连接已中止”)、FileNotFoundError(2,“无此类文件或目录”)

如何从同一网络上的容器2查找
5extraNodes\u plc1\u 1
容器的IP地址


注意:我当前正在网络上运行容器2
test\u net
(与容器1相同的网络)。我还尝试过在网络
主机
模式下运行它。两者都失败。

如果您不想使用公共网络和Docker DNS,如@larsks所述:

默认情况下,容器不允许更改主机系统上的内容,这是docker的核心概念。但您可以显式地允许访问docker sock:

docker-run-v/var/run/docker.sock:/var/run/docker.sock容器2

但请记住:这个容器获得了超级力量,如果必要的话,应该得到很好的保护


如果您还有其他问题,请从container2提供Dockerfile

获取
5ExtraNodes\u plc1\u 1
ip地址的最简单方法是将新容器连接到同一网络,然后使用DNS。