创建新容器后,是否可以运行命令从主机获取容器的IP地址?

基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。


当前回答

还没有人提出Docker Python API。Docker API获取IP地址的解决方案相当简单。

*基于NIX的操作系统:dockerapi3.7(由于canadadry的评论而更新)

import docker

client = docker.DockerClient(base_url='unix://var/run/docker.sock')
x_container = client.containers(filters={"name":"x_container"})[0]
x_ip_addr = x_container["NetworkSettings"]["Networks"]["NETWORK_NAME"]["IPAddress"]

OS不可知:dockerapi4.0.x(由于评论中的pds而添加)

import docker

client = docker.from_env()
container = client.containers.get(container_name)
vars( container )["attrs"]["NetworkSettings"]["Networks"]["<NETWORK_NAME>"]["IPAddress"]

不太难找到,但很有用。此外,这可以很容易地修改,以查找分配给各种网络上的容器的所有IP。

其他回答

要获取容器的IP地址和主机端口,请执行以下操作:

docker inspect containerId | awk '/IPAddress/ || /HostPort/'

输出:

    "HostPort": "4200"
                    "HostPort": "4200"
        "SecondaryIPAddresses": null,
        "IPAddress": "172.17.0.2",
                "IPAddress": "172.17.0.2",

Docker inspect用于打印所有容器ip及其各自的名称

docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /'

Use:

docker inspect $CID | grep IPAddress | grep -v null| cut -d '"' -f 4 | head -1

码头工人检查MY_CONTAINER | jq-r'。[].网络设置.网络[].IP地址'

plus

优雅的语法灵活(一旦你使用jq,你可以在任何地方使用它,有json,非常有用)强大的

需要安装jq(例如apt-get-installjq)

对于Windows容器,请使用

docker exec <container> ipconfig

其中<container>是容器的名称或id。

您可以使用docker ps来查找容器的id。