如何查看某个docker应用的映射关系
在使用 Docker 部署应用时,我们通常会将应用程序的端口映射到主机的某个端口上,以便通过主机的 IP 地址和端口号来访问应用。本文将介绍如何查看某个 Docker 应用的映射关系,以便确认应用的访问地址。
使用 docker ps
命令查看容器信息
我们首先使用 docker ps
命令来查看当前正在运行的容器。该命令会列出容器的基本信息,包括容器的 ID、名称、状态、端口映射等。
$ docker ps
示例输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a09b3b2c55e nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp webapp
在输出结果的最后一列可以看到端口映射信息,格式为 主机端口:容器端口
。上面的示例中,0.0.0.0:8080->80/tcp
表示将容器的 80 端口映射到主机的 8080 端口。
使用 docker inspect
命令查看容器详细信息
如果我们需要查看更详细的信息,例如容器的 IP 地址和映射的端口号,可以使用 docker inspect
命令。
$ docker inspect <容器ID或名称>
示例命令:
$ docker inspect webapp
该命令会返回一个 JSON 格式的容器详细信息。我们可以通过过滤器来提取所需的信息。
示例输出:
[
{
"Id": "3a09b3b2c55e...",
"Name": "/webapp",
"NetworkSettings": {
"IPAddress": "172.17.0.2",
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8080"
}
]
}
}
}
]
在上面的输出中,我们可以看到容器的 IP 地址为 172.17.0.2
,而端口映射信息为 "80/tcp": [{ "HostIp": "0.0.0.0", "HostPort": "8080" }]
。
使用 docker port
命令查看指定容器端口映射
如果我们只关心某个容器的端口映射情况,可以使用 docker port
命令来获取指定容器的端口映射信息。
$ docker port <容器ID或名称> <容器端口>
示例命令:
$ docker port webapp 80
示例输出:
0.0.0.0:8080
上述输出中,我们可以看到容器的 80 端口映射到主机的 8080 端口。
封装为 Shell 脚本
为了方便查看容器的映射关系,我们可以将上述命令封装为一个 Shell 脚本,以便快速地获取所需的信息。
#!/bin/bash
# 获取容器的映射关系
get_container_mapping() {
local container_id=$1
local container_port=$2
local host_port=$(docker port "$container_id" "$container_port")
echo "容器 $container_id 的 $container_port 端口映射到主机的 $host_port 端口"
}
# 主函数
main() {
local container_id=$1
local container_port=$2
get_container_mapping "$container_id" "$container_port"
}
# 调用主函数并传入参数
main "$@"
保存为 docker_mapping.sh
文件,并使用以下命令运行脚本:
$ chmod +x docker_mapping.sh
$ ./docker_mapping.sh <容器ID或名称> <容器端口>
示例命令:
$ ./docker_mapping.sh webapp 80
示例输出:
容器 webapp