对于容器ID或名称,可以运行命令 docker container ls . 它将列出每个正在运行的容器 .
6
我编写了以下Bash脚本来获取在 docker-compose 下运行的所有容器的IP地址表 .
function docker_container_names() {
docker ps -a --format "{{.Names}}" | xargs
}
# Get the IP address of a particular container
dip() {
local network
network='YOUR-NETWORK-HERE'
docker inspect --format "{{ .NetworkSettings.Networks.$network.IPAddress }}" "$@"
}
dipall() {
for container_name in $(docker_container_names);
do
local container_ip=$(dip $container_name)
if [[ -n "$container_ip" ]]; then
echo $(dip $container_name) " $container_name"
fi
done | sort -t . -k 3,3n -k 4,4n
}
#!/usr/bin/env python
# Coding: utf-8
# Save this file like get-docker-ip.py in a folder that in $PATH
# Run it with
# $ docker inspect <CONTAINER ID> | get-docker-ip.py
import json
import sys
sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b733ae18c1c parzee/database "/usr/lib/postgresql/" 6 minutes ago Up 6 minutes 5432/tcp serene_babbage
30 回答
要获取容器的IP地址和主机端口:
输出:
只是为了完整性:
我真的很喜欢 --format 选项,但起初我并不知道这个选项,所以我用一个简单的Python单行程来得到相同的结果:
检查对我不起作用 . 也许因为我正在使用
-net host
和一些命名空间 .无论如何,我发现这很好用:
在Docker 1.3中,您还可以通过以下步骤进行检查:
输入正在运行泊坞窗:
根据我喜欢的一些答案,我决定将它们合并到一个函数中以获取所有IP地址,将另一个合并到特定容器中 . 它们现在在我的
.bashrc
文件中 .第一个命令提供所有容器的IP地址,第二个命令提供特定容器的IP地址 .
对于Windows 10:
首先获取容器ID:
(第一列是容器ID)
使用容器ID运行:
在底部,在“NetworkSettings”下,您可以找到“IPAddress”
或者只是做:
Docker在Go内部制作,它也使用Go语法进行查询 .
要检查特定容器的IP地址,需要运行命令(-f表示格式选项)
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id_or_name
对于容器ID或名称,可以运行命令
docker container ls
. 它将列出每个正在运行的容器 .我编写了以下Bash脚本来获取在
docker-compose
下运行的所有容器的IP地址表 .您应该将变量网络更改为您自己的网络名称 .
从Docker版本1.10.3开始,构建20f81dd
除非你告诉Docker,否则Docker总是在桥接网络中启动你的容器 . 所以你可以尝试下面这个命令:
然后应该返回一个容器部分,该部分将显示该正在运行的容器的IP地址 .
NOTE!!! for Docker Compose Usage:
由于Docker Compose为每个集群创建了一个独立的网络,因此以下方法不适用于
docker-compose
.最优雅,最简单的方法是将shell函数定义为最多投票的答案@WouterD's:
Docker可以将容器ID写入Linux程序之类的文件中:
使用
--cidfile=filename
参数运行,Docker将容器的ID转储到此文件 .Docker runs PID equivalent Section
使用PID文件
--cidfile
参数,app.cid
文件内容如下:a29ac3b9f8aebf66a1ba5989186bd620ea66f1740e9fe6524351e7ace139b909
➜ blog-v4 git:(develop) ✗ docker inspect
cat app.cid``$ docker inspect
cat app.cid| python -c "import json;import sys;\ sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])" 172.17.0.2
更加人性化的形式
http://networkstatic.net/10-examples-of-how-to-get-docker-container-ip-address/
这里有10种获取Docker容器IP地址的替代方案 .
如果容器部署到默认桥接网络,则上述方法有效 .
但是,如果使用自定义桥接网络或覆盖网络,我发现以下内容更好:
快速回答(这有效):
获取您的容器名称或ID:
然后这样做:
对于那些来自谷歌的人来说,从终端(而不是通过脚本)找到命令执行的解决方案,jid(具有自动完成和建议的交互式JSON向下钻取工具)可以让您通过减少输入来实现相同的功能 .
键入tab .Net选项卡,您将看到以下内容:
输入.IPA标签,您会看到以下内容:
我不得不通过docker容器名称提取docker容器IP地址,以便在部署脚本中进一步使用 . 为此,我编写了以下bash命令:
假设把它放到一个bash脚本中会很方便,它会将my_container_name作为参数...
检查的
--format
选项来救援 .现代Docker客户端语法:
旧Docker客户端语法:
这将只返回IP地址 .
你可以使用
docker inspect <container id>
例:
只需一个命令即可获取所有容器名称及其IP地址 .
如果您使用的是
docker-compose
,则命令将为:输出将是:
使用:
如果您使用Docker Toolbox安装了Docker,则可以使用Kitematic应用程序获取容器IP地址:
选择容器
单击“设置”
单击“端口”选项卡 .
在
~/.bashrc
或相关文件中添加此shell脚本:然后,要获取容器的IP地址,只需执行以下操作:
对于新版本的Docker,请使用以下内容:
执行:
这将显示活动泊坞窗图像:
使用CONTAINER ID值:
“172.17.0.2”
对于 Windows containers 使用
其中
<container>
是容器的 name 或 id .您可以使用
docker ps
查找容器的ID .要扩展ko-dos的答案,这里是列出所有容器名称及其IP地址的别名:
将先前的答案与基于Docker映像名称查找容器ID相结合 .
如果您忘记了容器ID或者不想使用shell命令进行操作,那么最好使用像Portainer这样的UI .
https://portainer.io/
在那里,您可以找到有关容器和IP的所有信息 .
显示所有容器的IP地址:
docker inspect CONTAINER_ID | grep "IPAddress"
这是我今天用Python开发的解决方案,使用“docker inspect container”JSON输出作为数据源 .
我有很多容器和基础设施需要检查,我需要以快速和 pretty 方式从任何容器中获取基本网络信息 . 这就是我制作这个剧本的原因 .
IMPORTANT: 从版本1.9开始,Docker允许您创建多个网络并将它们附加到容器 .
The output is just like this:
按名称引用容器:
然后按名称获取IP地址: