Docker全系列 - Docker如何给容器新增、修改映射端口

526 阅读1分钟

Docker如何给容器新增、修改映射端口

方案一:修改配置文件

[root@localhost ~] docker stop [容器ID]

[root@localhost ~] docker inspect [容器名称] | grep Id

[root@localhost ~] vim /var/lib/docker/containers/[容器ID]/hostconfig.json
# 在PortBindings标签下按照原有的格式新增需要映射的端口,如果需要修改原来映射的端口把参数里原来的内容换掉即可
"PortBindings":{"[port1]/tcp":[{"HostIp":"","HostPort":"port1"}], "[port2]/tcp":[{"HostIp":"","HostPort":"port2"}]},
    
[root@localhost ~] vim /var/lib/docker/containers/[容器ID]/config.v2.json
# 在ExposedPorts标签下按照原有的格式新增需要映射的端口,如果需要修改原来映射的端口把参数里原来的内容换掉即可
"ExposedPorts":{"[port1]/tcp":{},"[port2]/tcp":{}}

[root@localhost ~] systemctl restart docker

[root@localhost ~] docker start [容器ID]

总结:
    
    优点:不会对容器产生副作用
    缺点:需要重启docker,这对于在生产环境来说也许是不可接受的

方案二:重命名容器

[root@localhost ~] docker run -d -p xxx -v xxx xxxxx --name xx1 .....
# 建立一个新的容器

[root@localhost ~] docker rm -f [原来的容器]
[root@localhost ~] docker rename xx1 [原来的容器名称]

总结:
    
    优点:不用重启docker,不会影响到其他容器的运行,影响相对较小
    缺点:不适合所有的容器,有的镜像新建了容器可能需要初始化一些文件到映射的目录里,这样会替换掉原来容器产生的数据造成生产事故,!!!所以谨慎使用!!!