引言

大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。

怎么解决这个难题,以下方法来自stackoverflow,并亲自成功试验过了:

1.查看容器id

$ docker ps -a

2.停止docker服务

$ systemctl stop docker

3.修改这个容器的hostconfig.json文件中的端口(原帖有人提到,如果config.v2.json里面也记录了端口,也要修改)

$ cd /var/lib/docker/containers/容器id
$ vi hostconfig.json
> 如果之前没有端口映射, 应该有这样的一段:
> "PortBindings":{}
> 增加一个映射, 这样写:
> "PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]}
> 前一个数字是容器端口, 后一个是宿主机端口. 
> 而修改现有端口映射更简单, 把宿主机端口号改掉就行.

4.启动docker服务

$ systemctl start docker