Python 3.x Docker SDK:查找容器';谁的IP地址?
我有两个码头集装箱。容器1名为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
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地址
注意:我当前正在网络上运行容器2test\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。