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

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


当前回答

使用Python新API:

import docker

client = docker.DockerClient()
container = client.containers.get("NAME")
ip_add = container.attrs['NetworkSettings']['IPAddress']
print(ip_add)

其他回答

如果您使用的是Windows,您可能无法从docker inspect获得任何信息,在这种情况下,您最好的选择是实际使用ipconfig/all并查找以太网适配器vEthernet(WSL):部分,在该部分您可以看到IPv4地址…:xxx.xxx.xxx.xxx(首选)-这将是您可以在本地浏览器的url中使用的IP。

基于我喜欢的一些答案,我决定将它们合并到一个函数中,以获取所有IP地址,另一个用于特定容器。它们现在在我的.bashrc文件中。

docker-ips() {
    docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
}

docker-ip() {
  docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}

第一个命令给出所有容器的IP地址,第二个命令给出特定容器的IP名称。

docker-ips
docker-ip YOUR_CONTAINER_ID

将此shell脚本添加到~/.bashrc或相关文件中:

docker-ip() {
  docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"
}

然后,要获取容器的IP地址,只需执行以下操作:

docker-ip YOUR_CONTAINER_ID

对于Docker的新版本,请使用以下内容:

docker-ip() {
        docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}

结合前面的答案,根据Docker图像名称查找容器ID:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' `docker ps | grep $IMAGE_NAME | sed 's/\|/ /' | awk '{print $1}'`

如果您使用Docker工具箱安装Docker,则可以使用Kitematic应用程序获取容器IP地址:

选择容器单击设置在“端口”选项卡中单击。