Docker 如何更改现有容器的配置

Table of Contents

参考链接:https://mybrainimage.wordpress.com/2017/02/05/docker-change-port-mapping-for-an-existing-container/

因为在创建容器之初,没有考虑到太多,也不可避免。现在容器内服务需要新增一个开放端口,经过搜索和研究发现,现整理总结于此。

1 步骤

  1. 在宿主机上以 root 用户,首先关闭掉 docker 服务,可以利用 service docker stop , 当然你也可以用 systemctl 来关闭。
  2. 接着 find / -name hostconfig.json ,这时你应该会看到你创建的容器的配置文件,ubuntu 系统显示的路径为 var/lib/docker/containers 下。
  3. 用 vim 或 emacs 打开文件,找到 PortBindings 项,然后添加端口,保存,关闭。
  4. 接着 find / -name config.v2.json , 里面有个暴露端口项 ExposedPorts 添加你想添加的端口号,还有个 Ports 项,也按格式添加。
  5. 注意以上修改配置文件后,最好验证下 json 格式是否正确,也可以通过 docker inspect <containerID> 查看配置情况。
  6. 接下来 service docker start , docker start <容器ID> , docker ps -a, 每次开启中间都可以查看下刚才配置的两个文件是否被覆盖,要确保修改的内容还在。不出意外,这时你应该能看到添加的端口项出现了。

2 另一种更简单方案

  1. stop running container
docker stop [CONTAINER NAME]
  1. commit the container
docker commit [CONTAINER NAME] [NEW CONTAINER NAME]
  1. re-run from the commited image
docker run -p 8080:8080 -td [NEW CONTAINER NAME]

REFURL:https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container/38783433