创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
没有人提及的最佳方法是为容器分配主机名。
docker run -d --hostname localcontainerhostname imageName
这将为您提供ip地址,但您可能还是希望使用主机名
nslookup localcontainerhostname
其他回答
基于我喜欢的一些答案,我决定将它们合并到一个函数中,以获取所有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
对于Windows容器,请使用
docker exec <container> ipconfig
其中<container>是容器的名称或id。
您可以使用docker ps来查找容器的id。
码头工人检查MY_CONTAINER | jq-r'。[].网络设置.网络[].IP地址'
plus
优雅的语法灵活(一旦你使用jq,你可以在任何地方使用它,有json,非常有用)强大的
减
需要安装jq(例如apt-get-installjq)
将此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>。
例如:
CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID