+关注继续查看
简介:平常我们在创建 Docker 容器的时候都会使用 -p 来指定容器和宿主机之间的端口映射。本篇文章指导如何修改创建过的容器端口映射

在这里插入图片描述

1. 执行环境

1.1 操作系统

aliyun ECS :CentOS 7.2 64位

1.2 docker 版本

Server Version: 19.03.2

2. 操作步骤

2.1 停止 docker 容器

在停止容器之前,我们需要知道要修改的容器ID,以别名 redis 为例

[xxx@xxx ~]# docker inspect redis
        "Id": "49db307d55334ffaccdf1d27958e5aa42e8d22cab14a38351d6df3446da8be56",
        "Created": "2020-05-07T13:06:30.952749892Z",
        "Path": "docker-entrypoint.sh",
]

redis的容器ID 记下 49db307d55334ffaccdf1d27958e5aa42e8d22cab14a38351d6df3446da8be56

执行停止容器操作,虽然可以直接执行第二步,但是建议养成 优雅退出 的习惯。 docker stop redis 防止数据的异常

2.2 停止 docker 服务

systemctl stop docker

2.3 修改容器 hostconfig.json文件

① 进入 docker 容器文件夹内

[root@single ~]# cd /var/lib/docker/containers/49db307d55334ffaccdf1d27958e5aa42e8d22cab14a38351d6df3446da8be56

② 修改 hostconfig.json 文件

[root@single 49db307d55334ffaccdf1d27958e5aa42e8d22cab14a38351d6df3446da8be56]# vim hostconfig.json 

只展示了需要修改的部分,内容展示如下:

...
    "PortBindings":{
        "6379/tcp":[
                "HostIp":"",
                "HostPort":"16379"
...

如果在创建容器时没有指定端口映射,那么此JSON文件中 PortBindings 属性是个空的对象,如果创建容器时指定了端口映射,就如同JSON文件中一样。那么就可以修改映射了,例如将文中 16379修改为16380

"PortBindings":{
        "6379/tcp":[
                "HostIp":"",
                "HostPort":"16380"
    }

在很多文章中看到说需要修改 config.v2.json 文件,但是在我实际操作中, 并不需要 。修改过 hostconfig.json 文件后看了一眼 config.v2.json ,发现已经自动更新了

2.4 启动 docker 服务

[xxx@xxx ~]# systemctl start docker

2.5 启动容器

[xxx@xxx ~]# docker start redis

3. 完事

纸上得来终觉浅,绝知此事要躬行
Dockerfile自定义镜像、CentOS安装DockerCompose及Docker镜像仓库
Dockerfile自定义镜像、CentOS安装DockerCompose及Docker镜像仓库