如何修改运行中的docker容器的端口映射

在docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则。那么这种情况我们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射?

方法一:删除原有容器,重新建新容器

这个解决方案最为简单,把原来的容器删掉,重新建一个。当然这次不要忘记加上端口映射。

优缺点:优点是简单快捷,在测试环境使用较多。缺点是如果是数据库镜像,那重新建一个又要重新配置一次,就比较麻烦了。

方法二:修改容器配置文件,重启docker服务

容器的配置文件路径:

  1. /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)

如上图,文件中其中有一项是PortBindings,其中8080/tcp对应的是容器内部的8080端口,HostPort对应的是映射到宿主机的端口9190。8361/tcp对应的是容器内部的8361端口,HostPort对应的是映射到宿主机的端口9191。按需修改端口,然后重启docker服务,再启动容器服务就可以了。

  1. systemctl restart docker

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

方法三:利用docker commit新构镜像

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

1、停止docker容器

  1. docker stop container01

2、commit该docker容器

  1. docker commit container01 new_image:tag

3、用前一步新生成的镜像重新起一个容器

  1. docker run --name container02 -p 80:80 new_image:tag

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

原文出处:https://blog.csdn.net/xiaoliuyiting/article/details/84288873

原文地址:https://www.cnblogs.com/sucretan2010/p/11406608.html

时间: 2024-10-22 14:54:23

如何修改运行中的docker容器的端口映射的相关文章

教你如何修改运行中的docker容器的端口映射

在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则.那么这种情况我们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射? 方法一:删除原有容器,重新建新容器 这个解决方案最为简单,把原来的容器删掉,重新建一个.当然这次不要忘记加上端口映射. 优缺点:优点是简单快捷,在测试环境使用较多.缺点是如

[转帖]教你如何修改运行中的docker容器的端口映射

在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则.那么这种情况我们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射? 方法一:删除原有容器,重新建新容器 这个解决方案最为简单,把原来的容器删掉,重新建一个.当然这次不要忘记加上端口映射. 优缺点:优点是简单快捷,在测试环境使用较多.缺点是如

修改docker容器的端口映射

大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改已有的这个容器呢?有.在stackoverflow上面找到答案了. 方法一 1.停止容器(docker stop d00254ce3af7) 2.停止docker服务(systemctl stop docker) 3.修改这个容器的hostconfig.json文件中的端口(原帖有人提到,如果con

macOS修改Docker容器的端口映射配置

查询容器ID 查询需要修改端口映射的容器ID docker inspect [OPTIONS] NAME|ID [NAME|ID...] OPTIONS说明 -f :指定返回值的模板文件. -s :显示总的文件大小. --type :为指定类型返回JSON. 进入Docker文件目录 cd ~/Library/Containers/com.docker.docker 使用screen进行登陆 cd /Data/vms/0 screen tty 进入配置文件夹 cd /var/lib/docker

解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题

在docker中运行第三方服务时,通常需要绑定服务端口到本地主机.但使用 -p 参数进行的端口映射,会自动在iptables中建立规则,绕过firewalld,这对于端口级的黑白名单控制管理是很不利的,所以我们需要对iptables进行手动修改. 这里以从名为centos.19.09.05的image建立一个容器为例: 首先,如果系统是CentOS7的话,需要关闭自带firewalld防火墙,并切换为iptables. 假设需要将新容器的27017端口映射到主机的27017端口,一般情况下我们使

Docker修改容器的端口映射和挂载路径

原文:Docker修改容器的端口映射和挂载路径 有时候因为某些原因需要修改容器的配置,如端口映射和挂载路径,但是如果删除容器后再重新运行,那么之前在容器内所做的修改就丢失了,本文提供了两种方法,可以在保留修改的同时修改配置参数. 方法一:将容器保存为镜像 1.停止容器 docker stop CONTAINER 2.将容器保存为新的镜像 docker commit CONTAINER NEWIMAGE:TAG 3.启动新的镜像,此时可以重新指定参数 docker run --name CONTA

linux修改运行中的脚本

工作中经常会遇到,在执行一个脚本时后,觉得有些地方要补充,而这个脚本又已经运行了一段时间,如果从头再来很浪费时间,这时如果能修改这个运行中的脚本就方便多了. 如: cat test.sh #!/bin/bash echo 1111 sleep 60 echo 2222 当开始运行后,如果想修改第二个echo的输出值,怎么办? 直接打开test.sh修改肯定是不行的,这就好比,一个运行中的脚本,你把文件删除了之前,脚本依然可以运行下去一样.这是因为,此时的脚本已经放在了内存里.所以要想修改脚本只能

Docker运行MongoDB及Redis及ssh端口映射远程连接

Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. 本节中,我们需要依次完成下面几项任务: MongoDB 的安装及配置 Redis 的安装及配置 Dockerfile 的编写 从 Dockerfile 构建镜像 本次实验的需求是完成 Dockerfile,通过 Dockerfile 创建 MongoDB 或 Redis 应用.Dockerhub上

解决Windows10下无法对docker容器进行端口访问(端口映射的问题)

解决Windows10下无法对docker容器进行端口访问(端口映射的问题) 问题详情 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务,映射也做好 问题:在主机的浏览器中,打开localhost:port无法访问对应的Web服务. 问题解析 原因:docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker. 也就是说,服务中使用