创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
我的回答:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} %tab% {{.Name}}' $(docker ps -aq
) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n
也可以作为bash别名:
docker-ips() { docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} %tab% {{.Name}}' $(docker ps -aq) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n }
输出按IP地址排序,制表符分隔:
# docker-ips
172.18.0.2 memcached
172.18.0.3 nginx
172.18.0.4 fpm-backup
172.18.0.5 dns
172.18.0.6 fpm-beta
172.18.0.7 exim
172.18.0.8 fpm-delta
172.18.0.9 mariadb
172.18.0.10 fpm-alpha
172.19.0.2 nextcloud-redis
172.19.0.3 nextcloud-db
172.19.0.4 nextcloud
其他回答
对于Windows容器,请使用
docker exec <container> ipconfig
其中<container>是容器的名称或id。
您可以使用docker ps来查找容器的id。
docker inspect <container id> | grep -i ip
例如:
docker inspect 2b0c4b617a8c | grep -i ip
还没有人提出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。
只是另一个经典的解决方案:
docker ps -aq | xargs docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}'
对于窗口10:
docker inspect --format "{{ .NetworkSettings.IPAddress }}" containerId