docker--修改容器的映射端口

简介: docker--修改容器的映射端口

前戏


如果我们启动了一个容器,并且将宿主机的端口和容器的端口映射上了。有时候我们需要更改宿主机的端口或者要添加映射端口。这里提供三种方案


新建容器


这个解决方案最为简单,把原来的容器删掉,重新建一个。当然这次不要忘记加上端口映射。例如下面的 rabbitmq 容器,映射了三个端口到宿主机上

docker run -id --name rabbitmq  \
   -p 5672:5672  \
   -p 15672:15672 \
   -p 15692:15692 \
   -v /opt/rabbitmq/data:/var/lib/rabbitmq  \
   -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest \
   rabbitmq:3.8.3-management


修改容器配置文件


修改配置文件的话,需要停止 docker 服务

systemctl stop docker

容器的配置文件路径:cd /var/lib/docker/containers/{容器id}/hostconfig.json

我们进入到 243f14b67efbd5b841fed1f6d820f6f47370c17f251ecf3b95b89f5e255483f3/ 目录里面,这个容器就是上面的 rabbitmq 容器

打开 hostconfig.json 文件,内容如下

文件中其中有一项是 PortBindings,其中 15672/tcp 对应的是容器内部的 15672 端口,HostPort 对应的是映射到宿主机的端口 15672。5672/tcp 对应的是容器内部的 5672 端口,HostPort 对应的是映射到宿主机的端口 5672。按需修改端口

然后在修改 config.v2.json 文件

如果没有ExposedPorts 在 config.v2.json 里面添加一个配置项 "ExposedPorts":{"80/tcp":{}} , 将这个配置项添加到 "Tty": true, 前面,如果有就添加 "80/tcp":{} 端口即可。

注意:80 为实际容器需要映射的端口

然后重启docker服务,再启动容器服务就可以了

systemctl restart docker

优缺点:这个方法的优点是没有副作用,操作简单。缺点是需要重启整个docker服务,如果在同一个宿主机上运行着多个容器服务的话,就会影响其他容器服务。


利用docker commit新构镜像


docker commit:把一个容器的文件改动和配置信息 commit 到一个新的镜像。这个在测试的时候会非常有用,把容器所有的文件改动和配置信息导入成一个新的 docker 镜像,然后用这个新的镜像重起一个容器,这对之前的容器不会有任何影响。

docker stop container01  # 停止docker容器
docker commit container01 new_image:tag # commit该docker容器
docker run --name container02 -p 80:80 new_image:tag #用前一步新生成的镜像重新起一个容器

优缺点:这种方式的优点是不会影响统一宿主机上的其他容器,缺点是管理起来显得比较乱,没有第二种方法那么直观。


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
254 57
|
2月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
247 58
|
2月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
203 1
|
1月前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎
|
1月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
1月前
|
存储 持续交付 Docker
Docker:颠覆传统开发的轻量级容器革命
Docker:颠覆传统开发的轻量级容器革命
|
3月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
2月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
311 11