首先说明一下,当我们启动一个镜像时,可以通过命令指定容器和宿主机的端口映射。如下:
docker run -d -p 8080:80 xxxx
但是,当我们想修改映射的端口时,可以不用采取删除旧镜像,创建新镜像,反而可以采取修改配置文件实现我们的目的。
执行命令
docker inspect [CONTAINER ID]
我们可以看到,其中"HostPort": "8080"就是我们容器映射的宿主机端口了,我们要做的就是修改它。
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
},
hostconfig.json文件的位置:
cd /var/lib/docker/containers/[CONTAINER ID]
开始采用docker stop [CONTAINER ID]的方式停止docker、修改hostconfig.json、重启docker,发现端口总是被还原,修改一直不生效,最后发现。。
防止修改后重启容器映射端口被还原,按照以下操作进行:
1、首先停止docker服务
# systemctl stop docker
2、编辑 hostconfig.json 修改 HostPort 为新的端口,保存退出。
3、重启docker服务
# systemctl start docker
4、查看镜像是否启动
# docker ps
5、自己的镜像没有启动时,手动启动即可
# docker start [CONTAINER ID]