1.停止docker服务

1
systemctl stop docker

2.修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1>
docker ps查看需要修改映射关系的容器containers id
cd /var/lib/docker/containers/容器id 路径下的文件
#注意容器id需要tab补全。如这里的6de4ba874a92,实际路径为:/var/lib/docker/containers/6de4ba874a923cd9b7dd39f1e32efbc852d3ea5b8e039ae54e19389fdf43bf2d/
例子:root@ShareTekSrv2:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3ce43368848 redmine:4.1.1 "/docker-entrypoint.…" 3 months ago Up 4 hours 0.0.0.0:9091->3000/tcp TS-redmine
6de4ba874a92 mysql:5.7 "docker-entrypoint.s…" 3 months ago Up 4 hours 0.0.0.0:3306->3306/tcp TS-mysql

2>
进入目录/var/lib/docker/containers/容器id, 修改hostconfig.json
找到“PortBindings”进行修改
例子:找到这段内容, 第一个端口号3306是容器内部端口, HostPort就是主机端口号3306
“PortBindings”:{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3306”}]}
修改mysql的映射主机端口为3307, 只需要在此处修改HostPort的值为3307
“PortBindings”:{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3307”}]}
#修改这个配置文件时, 一定要停止docker , 而不是停止mysql容器

3>
查看config.v2.json
找到"ExposedPorts":{“3306/tcp”:{}} 这段内容, 此处是容器的端口,
如果修改hostconfig.json的内容为以下
“PortBindings”:{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3307”}]}
则confing.v2.json处就要修改为
"ExposedPorts":{"3305/tcp":{}}
#对于不存在涉密的数据库,端口都改为3306即可

3.启动docker服务及docker容器

1
2
systemctl start docker
docker start docker names