创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的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
其他回答
要获取容器的IP地址和主机端口,请执行以下操作:
docker inspect containerId | awk '/IPAddress/ || /HostPort/'
输出:
"HostPort": "4200"
"HostPort": "4200"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
按名称引用容器:
docker run ... --name pg-master
然后按名称获取IP地址:
MASTER_HOST=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' pg-master)
为了扩展ko-dos的答案,这里有一个别名来列出所有容器名称及其IP地址:
alias docker-ips='docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect $name | grep IPAddress | cut -d \" -f 4; done'
将此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"