不幸的是,通过DOCKER命令无法更改现有 RUNNING 容器的端口映射(从主机到容器的转发端口)!

因此,在镜像运行的时候或启动端口的时候,要谨慎操作。

通过修改配置文件修改端口

  1. 停止容器
    docker stop <contanier ID>

    停止所有: docker stop $(docker ps -aq)
    删除所有: docker rm $(docker ps -qa)
    
  2. 停止docker服务
    systemctl stop docker

  3. 找到容器文件

    find / -name containers 
    ## centos 7
    ## 通常在:/var/lib/docker/containers/<container ID>/hostconfig.json中记录了端口
    ## 修改它
    vi /var/lib/docker/containers/<container ID>/hostconfig.json
    
    "PortBindings":
    {
        "22/tcp": [           #代表 container 端口
        {
            "HostIp": "",
            "HostPort": "222"   #代表主机端口
        }],
        "3000/tcp": [           #代表 container 端口
        {
            "HostIp": "",
            # "HostPort": "3000"   #代表主机端口
    		"HostPort": "3001"
        }]
    },
    
  4. 启动docker
    systemctl start docker

  5. 启动container
    docker start <container ID>

参考链接:

https://ahelpme.com/software/docker/docker-change-the-port-mapping-of-an-existing-container/