修改docker mysql容器端口的映射
参考来源地址:https://blog.csdn.net/my_chenjie/article/details/85058032
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。
有没有办法不保存镜像而直接修改已有的这个容器呢?有
我的操作步骤是:
- 停止容器 (docker stop container_id)
docker stop 712a3f0e5035
- 停止docker服务(systemctl stop docker)
systemctl stop docker
- 修改这个容器的hostconfig.json文件中的端口
cd /var/lib/docker/712a3f0e5035* #这里是CONTAINER ID
vi hostconfig.json
如果之前没有端口映射, 应该有这样的一段:
“PortBindings”:{}
增加一个映射, 这样写:
“PortBindings”:{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3307”}]}
前一个数字是容器端口, 后一个是宿主机端口.
而修改现有端口映射更简单, 把端口号改掉就行.
我改成"PortBindings":{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3306”}]}
(原帖有人提到,如果config.v2.json里面也记录了端口,也要修改)
- 启动docker服务(systemctl start docker)
systemctl start docker
- 启动容器
docker start 712
查看修改后的结果为:
[root@node114 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52ecb0aa3b1b supermap/iportal "/bin/sh -c /opt/run…" 8 weeks ago Exited (137) 13 minutes ago iportalserver
9f1c40dd51cf supermap/iserver "/bin/sh -c /opt/run…" 8 weeks ago Exited (137) 13 minutes ago supermapiserver
712a3f0e5035 8ef3 "container-entrypoin…" 8 weeks ago Up 3 seconds 0.0.0.0:3306->3306/tcp MYSQL56docker
5c58116a7eb7 nginx "nginx -g 'daemon of…" 8 weeks ago Exited (0) 4 weeks ago test