简介:平常我们在创建 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. 完事
纸上得来终觉浅,绝知此事要躬行