如何查看服务docker端口号

在使用Docker进行容器化部署时,我们经常会遇到需要查看容器的端口号的情况。本文将介绍如何通过命令行和Docker API来查看Docker容器的端口号,并提供了相关的代码示例。

1. 使用命令行查看容器端口号

在命令行中,我们可以使用docker ps命令来查看当前正在运行的容器,并显示容器的端口映射信息。

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  PORTS                   NAMES
1234567890ab   my_container   "command-to-start"       0.0.0.0:8080->80/tcp   my_container_1

在上面的示例中,我们可以看到容器 my_container_1 的端口映射信息,其中 0.0.0.0:8080->80/tcp 表示将容器内部的80端口映射到主机的8080端口上。

2. 使用Docker API查看容器端口号

除了命令行,我们还可以通过Docker API来获取容器的端口信息。Docker API提供了一组RESTful接口,可以通过HTTP请求来获取容器的详细信息。

下面是一个使用Python的docker库来获取容器端口的示例代码:

import docker

def get_container_ports(container_id):
    client = docker.from_env()
    container = client.containers.get(container_id)
    ports = container.attrs['NetworkSettings']['Ports']
    return ports

container_id = '1234567890ab'
ports = get_container_ports(container_id)
print(ports)

上述代码中,我们使用了docker库来连接Docker API,并通过容器ID获取容器的详细信息。然后,我们可以从NetworkSettings字段中获取端口信息。

3. 示例问题:查看Nginx容器的端口号

假设我们有一个Nginx容器,我们希望查看该容器的端口号。以下是一个简单的示例来解决这个问题:

import docker

def get_nginx_container_port():
    client = docker.from_env()
    containers = client.containers.list()
    for container in containers:
        if 'nginx' in container.name:
            ports = container.attrs['NetworkSettings']['Ports']
            for port in ports:
                if '80/tcp' in port:
                    return ports[port][0]['HostPort']
    return None

nginx_port = get_nginx_container_port()
if nginx_port:
    print(f"Nginx container port: {nginx_port}")
else:
    print("Nginx container not found.")

上述代码中,我们首先通过docker库获取所有容器列表,然后遍历每个容器,找到名称中包含'nginx'的容器。接着,我们从容器的端口映射信息中查找80端口,并获取主机端口号。

总结

本文介绍了如何使用命令行和Docker API来查看Docker容器的端口号,并提供了相关的代码示例。通过这些方法,我们可以方便地了解容器的端口映射信息,便于进行后续的访问和管理工作。

如果您想更详细了解Docker的端口映射和容器网络配置,请参阅[Docker官方文档](

erDiagram
    Container ||--o| Ports: has
    Ports {
        string containerPort
        string hostPort
        string protocol
    }

表格示例:

Container ID Image Command Ports Names
1234567890ab my_container "command-to-start" 0.0.0.0:8080->80/tcp my_container_1
9876543210ba nginx:latest "nginx -g 'daemon off'" 0.0.0.0:80->80/tcp nginx_container_1
4567890abcde mysql:latest "docker-entrypoint.sh mysqld" 0.0.0.0:3306->3306/tcp mysql_container_1