Docker关闭端口映射

引言

在使用 Docker 运行容器时,我们可能需要将容器内部的端口映射到主机上,以便我们可以通过主机的 IP 地址和端口访问容器内部的服务。然而,有时我们需要关闭某个端口的映射,这篇文章将向您介绍如何通过 Docker 命令或 Docker Compose 文件来关闭端口映射。

Docker 简介

Docker 是一个开源的容器化平台,它可以将应用程序和其依赖项打包到一个称为容器的独立单元中。这使得应用程序可以在任何环境中以相同的方式运行,无论是开发、测试还是生产环境。

Docker 端口映射

在 Docker 中,端口映射可以让容器内的服务通过主机的 IP 地址和端口访问。通常,我们使用 -p--publish 参数来指定端口映射。

例如,要将容器内的端口 8080 映射到主机的端口 80 上,我们可以使用以下 Docker 命令:

docker run -p 80:8080 my-container

上述命令将会启动一个名为 my-container 的容器,并将容器内的端口 8080 映射到主机的端口 80 上。

关闭端口映射

要关闭 Docker 容器的端口映射,我们可以使用以下两种方法:通过 Docker 命令或通过 Docker Compose 文件。

通过 Docker 命令关闭端口映射

要关闭容器的端口映射,我们可以使用 docker container update 命令,并指定新的端口映射配置。以下是具体步骤:

  1. 首先,通过 docker ps 命令查找要关闭端口映射的容器的 ID 或名称。

    docker ps
    

    docker ps

  2. 根据上一步中获得的容器 ID 或名称,使用以下命令关闭端口映射:

    docker container update --publish-rm <host_port>:<container_port> <container_id_or_name>
    

    在上述命令中,将 <host_port> 替换为主机上要关闭的端口号,<container_port> 替换为容器内部的端口号,<container_id_or_name> 替换为容器的 ID 或名称。

    例如,要关闭主机上的端口 80 与容器内部的端口 8080 的映射,我们可以使用以下命令:

    docker container update --publish-rm 80:8080 my-container
    
  3. 使用 docker ps 命令验证端口映射是否已关闭。

    docker ps
    

    docker ps

通过 Docker Compose 文件关闭端口映射

如果您使用 Docker Compose 来管理多个容器的部署,您也可以通过编辑 Docker Compose 文件来关闭端口映射。

以下是一个示例的 Docker Compose 文件:

version: '3'
services:
  my-service:
    image: my-image
    ports:
      - "80:8080"

在上述示例中,my-service 服务的端口映射将容器内的端口 8080 映射到主机的端口 80 上。

要关闭端口映射,只需将 ports 配置删除或注释掉即可:

version: '3'
services:
  my-service:
    image: my-image
    # ports:
    #   - "80:8080"

保存并退出文件后,使用以下命令重新启动 Docker Compose:

docker-compose up -d

这将会重新部署容器,但不再进行端口映射。

序列图

下面是使用 mermaid 语法绘制的关闭 Docker 端口映射的序列图:

sequenceDiagram
    participant User
    participant DockerCLI
    participant DockerEngine
  
    User->>DockerCLI: docker container