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

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

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

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

 

问题背景


docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7

  • 创建容器时,指定了端口映射(-p)
  • 如果容器运行之后发现端口需要改怎么办?

image.png


当前是访问 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

image.png

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

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

cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633

ls

image.png

修改 hostconfig.json

vim hostconfig.json

image.png

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

 

重新启动 Docker 服务

systemctl stop docker

docker start tomcat7

docker ps

image.png

访问 8888 端口没问题!

 

注意

 

优点

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

 

缺点

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

 

使用 docker commit 命令


停止 Docker 容器

docker stop tomcat7

 

使用 commit 构建新镜像

docker commit tomcat7 new_tomcat7

docker images

image.png

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

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

docker ps

image.png


修改新容器的名字

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

docker rm -f tomcat7

docker rename tomcat77 tomcat7

docker ps

image.png

优点

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

 

缺点

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

 

修改主机 iptables 端口映射


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


相关文章
|
10月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
968 6
|
10月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
887 6
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1438 108
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
874 57
|
10月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
861 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
717 59
|
12月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
694 16