修改运行中的docker容器端口映射

修改运行中的docker容器端口映射

在docker run的时候我们可能会忘记设置端口映射,或者我们已经设置过端口映射,但是因为某种原因,我们需要更改端口号,这个时候我们就需要进行更改端口映射的操作。

但是一般情况下是不可以改变容器的端口映射的,只能通过run命令指定端口号。

网上有很多方法:

1、删除原容器,重新新建容器,这时候使用-p指令添加端口映射;

2、修改容器配置文件,然后重启docker服务;

修改配置文件 /var/lib/docker/containers/[hash_of_the_container_ID]/hostconfig.json

重启docker服务操作 systemctl restart docker

3、利用docker commit新构镜像【建议使用的方法】

  • 停止docker容器

    1
    docker stop container_name
  • commit新构docker image

    1
    docker commit container_name new_image:tag
  • 使用上一步生成的image重新生成一个新的镜像(此时记得加上端口映射)

    1
    docker run --name new_container_name -p 80:80 new_image:tag

注意:

  • 对于第1个方法虽然很快捷,但是我们可能会需要重新配置镜像文件,比较麻烦;

  • 对于第2个方法,我这边尝试好像是有问题的,我虽然改过了配置文件,但是重启docker以后端口的配置文件又自动变回去了,这一点我很郁闷,我也不知道为啥会这样,这里没有深究,先这样吧。

  • 对于第3个方法,我觉得需要注意的是就是docker images界面多了一个镜像文件,可能管理啥的比较乱,但是省去了配置新镜像的繁琐步骤,不过我们需要知道原镜像的启动方式,以及本地文件的挂载等,我这边有些服务是通过自动文件脚本安装的,这个时候有时候找不到启动方式,或者对docker不太熟悉不知道本地文件怎么挂载上去,或者不知道本地文件的位置在哪里等等各种原因,这种方法虽然可以运行,但是可能还是不会达到想要的效果,所以我们还是需要知道原docker的启动方式以及本地文件地址等,再进行操作。