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

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


当前回答

只需一个命令即可获取所有容器名称及其IP地址。

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

如果您使用docker compose,则命令如下:

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

输出将为:

/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2

其他回答

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

将此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 inspect CONTAINER_ID | grep "IPAddress"

您可以将-i添加到grep中以忽略该情况,那么即使以下操作也会奏效:

docker inspect CONTAINER_ID | grep -i "IPaDDreSS"

检查此脚本:https://github.com/jakubthedeveloper/DockerIps

它以以下格式返回容器名称及其IP:

abc_nginx 172.21.0.4
abc_php 172.21.0.5
abc_phpmyadmin 172.21.0.3
abc_mysql 172.21.0.2

使用Python新API:

import docker

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