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 服务启动而自启动,可看:https://www.cnblogs.com/poloyy/p/13985567.html
- 有些文章会写到还需要改 config.v2.json 里的端口,但实操了一遍并不需要
优点
直接操作配置文件没有副作用,算简单
缺点
需要暂停 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 端口映射
网上很多文章都有这个方法,但是我实操了一遍是不行的,不知道是不是步骤错了,哪位大佬知道可否说一声捏
Docker(33)- 如何修改 docker 容器的端口映射的更多相关文章
- 如何修改运行中的docker容器的端口映射和挂载目录
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- 教你如何修改运行中的docker容器的端口映射
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- 修改docker容器的端口映射
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...
- [转帖]教你如何修改运行中的docker容器的端口映射
教你如何修改运行中的docker容器的端口映射 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当dock ...
- 如何修改运行中的docker容器的端口映射
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- docker容器的端口映射
1.创建一个Nginx 容器,先不映射端口 [root@localhost ~]# docker run --name my_nginx -d nginx 7be3673a4c0f8f7ffe79a7 ...
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...
- 修改已经创建的docker容器的端口映射
原始链接:https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-dock ...
- Docker容器内部端口映射到外部宿主机端口的方法小结
转自:https://www.cnblogs.com/kevingrace/p/9453987.html Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务.容器启动之后,容器中可以 ...
随机推荐
- springboot2.2.2企业级项目整合redis与redis 工具类大全
1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <depe ...
- 题解:CF593D Happy Tree Party
题解:CF593D Happy Tree Party Description Bogdan has a birthday today and mom gave him a tree consistin ...
- pyquery 匹配NavigableString
pyquery 匹配NavigableString不像xpath那样精确找打匹配对象,只需匹配包含NavigableString的根节点
- php-fpm 高并发 参数调整 转
工作中经常会遇到会给客户配置服务器,其中有的客户还会有并发量要求,其中也会必须要用负载均衡承载压力的.增加服务器数量肯定能有效的提升服务器承载能力,但只有根据目前已有配置设置好单台服务器才能更好的发挥 ...
- Jenkins:用maven在本地打包部署一个github的springboot项目(Jenkins 2.257)
一,部署的准备工作 1,测试项目的地址: https://github.com/liuhongdi/profile 是一个空白项目 2,准备java环境:参见: https://www.cnblogs ...
- 【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
注意:在对Service Fabric的节点做操作之前,请务必确认是否是种子节点(Seed Node)且当前节点的数量是否与SF的持久层要求的数量一致. 可靠性级别是 Service Fabric 群 ...
- HEAP CORRUPTION DETECTED:after Normal block错误方法解决
一:问题描述: 出现的问题如下: 二:问题产生的原因说明 该问题发生于操作堆内存的时候.产生该问题的原因是:你实际使用的内存大小超出了你实际申请的内存大小,在释放内存的时候就会发生该问题. 举个例子: ...
- GitHub如何删除项目库Repositories
1.在头像那里找到settings按钮 2.选择repositories 3.找到你要删除的项目 4.点击settings 5.滑到页面最下面,点击delete 7.输入项目名称,复制即可 8.删除后 ...
- 010_Java历史及特性
目录 Java历史 C语言 1972年 C++ 1982年 Java 1995年 Applet 图形界面的程序 J2SE Java 2 标准版 桌面 J2ME Java 2 移动版 手机 J2EE J ...
- scrapy爬取豆瓣电影信息
最近在学python,对python爬虫框架十分着迷,因此在网上看了许多大佬们的代码,经过反复测试修改,终于大功告成! 原文地址是:https://blog.csdn.net/ljm_9615/art ...