Docker(33)- 如何修改 docker 容器的端口映射

如果你还想从头学起 Docker,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1870863.html

 

问题背景

docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7
  • 创建容器时,指定了端口映射(-p)
  • 如果容器运行之后发现端口需要改怎么办?

 

当前是访问 9999 端口

 

删除原有容器,重新创建新的容器

删除容器

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

 

进入某个容器的配置文件目录下

容器ID 就是文件夹名称,可通过 docker ps -aq 来查看,不过这是缩写,对照起来看就行

cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
ls

 

修改 hostconfig.json

vim hostconfig.json

 

  • 输入 / ,搜索映射的端口(9999)
  • 修改端口值就行了
  • 修改完后 :wq 退出并保存此文件

 

重新启动 Docker 服务

systemctl stop docker
docker start tomcat7
docker ps

访问 8888 端口没问题!

 

注意

 

优点

直接操作配置文件没有副作用,算简单

 

缺点

需要暂停 Docker 服务,会影响其他正常运行的 Docker 容器

 

使用 docker commit 命令

停止 Docker 容器

docker stop tomcat7

 

使用 commit 构建新镜像

docker commit tomcat7 new_tomcat7
docker images

 

使用新镜像重新创建一个 Docker 容器

docker run -d -p 8888:8080 -i --name tomcat77 new_tomcat7
docker ps 

 

修改新容器的名字

如果新容器想用回旧容器的名字,需要先删了旧容器,再改名

docker rm -f tomcat7
docker rename tomcat77 tomcat7
docker ps

 

优点

  • 无需停止 Docker 服务,不影响其他正在运行的容器
  • 旧容器有的配置和数据,新容器也会有,不会造成数据或配置丢失,对新旧容器都没有任何影响

 

缺点

需要生成新的镜像和容器,管理镜像和容器的时间成本会上升

 

修改主机 iptables 端口映射

网上很多文章都有这个方法,但是我实操了一遍是不行的,不知道是不是步骤错了,哪位大佬知道可否说一声捏

 

posted @ 2020-11-17 11:55  小菠萝测试笔记  阅读(2750)  评论(0编辑  收藏  举报