Docker 建立好容器后,配置并不容易修改,本文记录修改建立好的容器的端口映射的方法。
docker commit 命令生成镜像好处是包治百病,正规途径 缺点就是过程繁琐,不够优雅
端口映射等容器信息都是存在某个地方,通过配置文件管理的,我们仅需修改配置文件的端口信息即可完成改写
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5190850b4fcc nginx "/docker" 9 hours ago Up 9 hours 80/tcp, 0.0.0.0:9443->443/tcp, :::9443->443/tcp nginxCONTAINER ID是5190850b4fccdocker stop nginxsystemctl stop docker/var/lib/docker/containers/{CONTAINER ID}和
CONTAINER ID容器相关的配置都在其 ID 对应的子目录里
cd /var/lib/docker/containers/5190850b4fc...# ls
5190850b4fcc...-json.log config.v2.json hostname mounts resolv.conf.hash
checkpoints hostconfig.json hosts resolv.conf我们需要修改的是
hostconfig.json和config.v2.json两个文件
hostconfig.json"PortBindings":{"443/tcp":[{"HostIp":"","HostPort":"9443"}]}"PortBindings":{"442/tcp":[{"HostIp":"","HostPort":"9442"}],"443/tcp":[{"HostIp":"","HostPort":"9443"}]}config.v2.json"ExposedPorts":{"442/tcp":{},"443/tcp":{},"80/tcp":{}}systemctl start dockerdocker start nginx# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5190850b4fcc nginx "/docker" 12 hours ago Up 2 hours 80/tcp, 0.0.0.0:9442->442/tcp, :::9442->442/tcp, 0.0.0.0:9443->443/tcp, :::9443->443/tcp nginx