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