Docker 查看映射

概述

Docker 是一个开源的平台,用于自动化部署、发布和管理应用程序的容器化技术。通过 Docker,我们可以将应用程序和其依赖项打包到一个虚拟化容器中,使得应用程序在任何环境中都能够以相同的方式运行。在 Docker 中,映射是一种将容器内部的目录或端口映射到宿主机上的操作,它使得容器与外部环境之间可以进行数据交互和通信。

本文将介绍 Docker 中如何查看映射的相关操作,并通过代码示例来演示具体的步骤。

流程图

flowchart TD
    subgraph Docker容器
        A(创建容器) --> B(查看容器ID)
        B --> C(查看映射)
    end
    subgraph 宿主机
        C --> D(查看容器的IP地址)
        C --> E(查看端口映射)
    end

示例代码

1. 创建容器

首先,我们需要创建一个 Docker 容器。可以使用如下命令创建一个名为 my_container 的容器,并在容器中运行一个简单的 Nginx 服务器。

docker run -d --name my_container -p 8080:80 nginx

在上述命令中,我们使用了 -d 参数让容器在后台运行,--name 参数指定容器的名称为 my_container-p 参数将容器的端口 80 映射到宿主机的端口 8080 上,并使用了 nginx 镜像。

2. 查看容器ID

查看容器的 ID 可以使用 docker ps 命令,该命令会列出当前正在运行的容器以及它们的相关信息。

docker ps

命令输出示例:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
a6d8a5bf7c5a   nginx     "/docker-entrypoint.…"   5 seconds ago   Up 4 seconds   0.0.0.0:8080->80/tcp   my_container

3. 查看映射

在容器创建后,我们可以使用 docker inspect 命令来查看容器的详细信息,包括它的 IP 地址和端口映射情况。

docker inspect my_container

命令输出示例(部分内容):

[
    {
        "Id": "a6d8a5bf7c5ad...",
        "Created": "2021-12-01T12:00:00.000Z",
        "State": {
            ...
        },
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    ...
                }
            }
        },
        "Ports": [
            {
                "PrivatePort": 80,
                "PublicPort": 8080,
                "Type": "tcp"
            }
        ],
        ...
    }
]

从上述输出中可以看到,容器的 ID 是 a6d8a5bf7c5ad...,IP 地址为 172.17.0.2,私有端口为 80,公共端口为 8080。

4. 查看容器的IP地址

我们可以使用 docker inspect 命令来查看容器的 IP 地址。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_container

上述命令使用了 -f 参数来指定格式化输出,并使用了模板语法 {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} 来获取容器的 IP 地址。

命令输出示例:

172.17.0.2

5. 查看端口映射

我们可以使用 docker port 命令来查看容器的端口映射情况。

docker port my_container

命令输出示例:

80/tcp -> 0.0.0.0:8080

从上述输出中可以看到,容器的端口 80 被