2-2-4-如何修改docker容器映射端口
问题背景
docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7创建容器时 . 指定了端口映射(
-p)如果容器运行之后发现端口需要改怎么办?

当前是访问9999端口
1. 删除原有容器 . 重新创建新的容器
删除容器
docker rm -f 容器ID/名字重新创建容器
docker run -d -p 8888:8080 -i --name tomcat7 tomcat:7重新指定需要映射的端口
优点 : 简单粗暴 . 在测试环境用的更多
缺点 : 如果是数据库、服务器相关的容器 . 创建新的容器 . 又得重新配置相关东西了
2. 修改容器配置文件(重点)
暂停
docker服务systemctl stop docker进入
Docker容器配置文件目录下cd /var/lib/docker/containers/ls
进入某个容器的配置文件目录下
容器
ID就是文件夹名称 . 可通过docker ps -aq来查看 . 不过这是缩写 . 对照起来看就行cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633ls
修改
hostconfig.jsonvim hostconfig.json
输入
/. 搜索映射的端口(9999)修改端口值就行了
修改完后
:wq退出并保存此文件
重新启动
docker服务systemctl start docker && docker start tomcat7 && docker ps

访问
8888端口没问题!注意 : 有些文章会写到还需要改
config.v2.json里的端口 . 但实操了一遍并不需要优点 : 直接操作配置文件没有副作用 . 算简单
缺点 : 需要暂停
Docker服务 . 会影响其他正常运行的Docker容器
3. 使用 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 服务 . 不影响其他正在运行的容器
旧容器有的配置和数据 . 新容器也会有 . 不会造成数据或配置丢失 . 对新旧容器都没有任何影响
缺点 : 需要生成新的镜像和容器 . 管理镜像和容器的时间成本会上升
参考链接
Docker(33)- 如何修改 docker 容器的端口映射 - 小菠萝测试笔记 - 博客园 (cnblogs.com)