一、问题背景
docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7
创建容器时,指定了端口映射(-p)
如果容器运行之后发现端口需要改怎么办?
第一种方法:删除原有容器,重新创建新的容器
删除容器
docker rm -f 容器ID/名字
重新创建容器
docker run -d -p 8888:8080 -i --name tomcat7 tomcat:7
优点
缺点
第二种方法:修改容器配置文件(重点)
暂停 Docker 服务
systemctl stop docker
进入 Docker 容器配置文件目录下
cd /var/lib/docker/containers/ls
进入某个容器的配置文件目录下
cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
ls
修改 hostconfig.json
vim hostconfig.json
输入 / ,搜索映射的端口(9999)
修改端口值就行了
修改完后 :wq 退出并保存此文件
重新启动 Docker 服务
systemctl stop docker
![]()
![]()
注意
如果想修改 Docker 容器随着 Docker 服务启动而自启动,可看:https://www.cnblogs.com/poloyy/p/13985567.html
有些文章会写到还需要改 config.v2.json 里的端口,但实操了一遍并不需要
优点
缺点
第三种方法:使用 docker commit 命令【测试成功】
停止 Docker 容器
docker stop tomcat7
使用 commit 构建新镜像
docker commit tomcat7 new_tomcat7docker
docker commit myjenkins portjenkins
sha256:afcd8efcb1df48856167fd490426edeb7bc033adf8bf620444ef1f62b1788dfb
使用新镜像重新创建一个 Docker 容器
docker run -d -p 8888:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name portjenkins portjenkins
![]()
修改新容器的名字
![]()
优点
无需停止 Docker 服务,不影响其他正在运行的容器
旧容器有的配置和数据,新容器也会有,不会造成数据或配置丢失,对新旧容器都没有任何影响
缺点
版权声明:本文内容来自CSDN:小菠萝测试笔记,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
原文链接:https://blog.csdn.net/qq_33801641/article/details/109763244
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。