快速修改运行中的docker容器端口映射的三种方式

目录
  • 前言
  • 方法一: 删除原有容器,重新建新容器
  • 方法三:利用docker commit新构镜像

前言

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

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

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

1|docker run -d -uroot -p 8989:8080 --name jenkins1 -v /home/wcy/jenkins_node:/var/jenkins_home jenkins/jenkins:2.289.3-cen
2|tos

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

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

我们需要新增一个端口,就是通过这个方式处理的,亲测有效。
首先关闭docker服务

1|systemctl stop docker

关闭之后,找到容器的配置文件路径,通常都是安装在这个路径下方

1|cd /var/lib/docker/containers

然后我们在ls查看一下容器,找我们想要修改的容器ID

修改容器中的 hostconfig.json 文件

如上图所示,文件中其中有一项是PortBindings

  • 8080/tcp对应的是容器内部的8080端口,
  • HostPort对应的是映射到宿主机的端口9190。
  • 8361/tcp对应的是容器内部的8361端口,
  • HostPort对应的是映射到宿主机的端口9191。

按需修改端口,然后重启docker服务,再启动容器服务就可以了

1|systemctl restart docker

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

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

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

1|docker commit container01 new_image:tag

commit该docker容器

1|docker commit container01 new_image:tag

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

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

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

到此这篇关于教你如何修改运行中的docker容器的端口映射的三种方式的文章就介绍到这了,更多相关修改docker容器端口映射内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

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

  • docker已启动容器修改添加端口映射的两种方法

    目录 简述 一.先提交,在配置 1.先将容器提交为镜像 2.创建新的容器并运行 二. 修改配置文件 1.关闭docker服务 2.修改hostconfig.json 3.修改config.v2.json 4.重启 docker服务 5.查看配置项已经修改成功 补充:docker容器怎么开端口 总结 简述 正常情况下,在你创建容器时可以添加多个端口映射,写法如下 每个端口映射都加一个-p docker run -itd --name centos -p 4000:8081 -p 3306:3306

  • docker容器启动后添加端口映射

    概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题.我曾经也问过度娘,很遗憾我没找到.本文就这个问题给出一个解决方法,旨在抛砖引玉.本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解. 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能. 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内

  • docker容器的四种端口映射演示分析

    端口映射 把容器的端口映射为宿主机的一个随机或者特定端口,使用外部用户可以访问容器服务 端口映射本是在容器底层做了 iptables 地址转发,出去的流量做 SNAT 源地址转发,进来的流量做 DNAT 目标地址转发. 四种端口映射 随机端口映射:就是把容器的端口随机映射为宿主机的一个端口. 指定端口映射:就是把容器的端口映射为宿主机的指定端口. 指定网卡随机端口映射:就是把容器的端口映射为宿主机的指定网卡的随机端口. 指定网卡端口映射:就是把容器的端口映射为宿主机的指定网卡的指定端口. 端口映

  • Docker 动态修改容器端口映射的方法

    前言:Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的.那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看---> 方法一:更改Docker配置文件(有风险) 通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.j

  • Docker容器修改端口映射的实现

    目录 可解决问题如下 解决方案 可解决问题如下 (1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射; 具体描述 1 首先创建一个容器并指定端口映射; sudo docker run -it --name forge_restful -v /data01/wangxiaofei01/project/restful/wanmingTask/forge_restful_api -p 8076:8076 -d 01

  • docker设置了端口映射,不能访问的解决方案

    #docker ps 查看, 所有端口都 做了映射 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 764b158ba491 open-falcon-plus-02:v-daiyi-01 "/bin/bash" 2 days ago Up 3 hours 0.0.0.0:4444->4444/tcp, 0.0.0.0:6030-6031->6030-6031/tcp, 0.0.0.0:6070-6071->6

  • docker 启用多个端口映射命令的操作

    如下: docker run -d -p 5000:23 -p 5001:22 --name telnet_ssh --privileged=true telnet:centos /usr/sbin/init 补充:docker 使多端口开放 如下: docker run -it -p20180:80  -p20181:8080 -p20182:8976 --name containerName image:tag 附提交 docker commit -a 'songlk' -m 'commit

  • 详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell. exec 在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了 source 在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行. 第一种:fork 特点:会生成子PID而且可重复被

  • .net中捕捉全局未处理异常的三种方式示例

    前言: 我们在实际项目开发中,经常会遇到一些不可预见的异常产生,有的异常在程序运行时就对其进行处理(try) 但是,有的程序不需要每一个地方都用try进行处理,那么针对这种情况,可以参照下面的方式,实现对异常的统一抓取处理,下面话不多说了,来一起看看详细的介绍吧. 方式一.Page_Error处理页面级未处理异常 作用域:当前的.aspx页面 描述:在需要处理的aspx页面的cs文件中,实现Page_Error方法,达到侦听当前页面未处理的异常 protected void Page_Error

  • vue中向data添加新属性的三种方式小结

    目录 向data添加新属性的三种方式 原理分析 三种方式 vue组件 data等属性介绍 向data添加新属性的三种方式 原理分析 首先在了解这三种方式之前,我觉的有必要说一下,为啥不能直接手动给data中的对象添加属性呢? 下面咱们一块分析下: vue2 是通过数据劫持 “Object.defineProperty” 实现数据响应式:     const obj = {};         let val = 'kk'         Object.defineProperty(obj,'na

  • Docker容器端口映射后突然无法连接的排查过程

    一.背景 一般需要对外提供服务的Docker容器,我们在启动时后使用-p命令将对外访问端口暴露给外部,例如启动Docker Registry,我们将5000端口映射出来供外部访问: docker run -d -p 5000:5000 registry 但最近碰到一个非常奇怪的情况:研发组里一个CentOS 7测试环境里部署有Docker Registry,并对外暴露了端口.启动容器后一段时间内都是可以正常工作的,但在不定时间间隔后,外部主机就会出现无法从仓库中拉取镜像的情况,提示TimeOut

  • 对已有的docker容器增加新的端口映射问题(两种方式)

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name] 这里是将容器内的80端口到宿主机的8088端口 在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式: 方式一:将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口 #1.停止现有容器 d

  • javascript中为某个元素指定事件的三种方式

    在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 3.在javascipt中,使用addEvenListener()方法 三种方法的比较 (1)在第二.三种方法中,可以向函数传入一个event对象,并读取其相应属性,而方法一不可以. (2)首选第二.三种,第一种不利于将内容与事件分离,也不能使用event对象的相关内容. 一些语法细节 (1)在第一种方法中,onclick大小写

  • 在vue项目中(本地)使用iconfont字体图标的三种方式总结

    目录 vue项目中(本地)使用iconfont字体图标 开始使用 vue项目中(本地)使用iconfont字体图标 这里有使用前的准备和三种使用方式介绍,参考这里 还有 vue中手动封装iconfont组件(三种引用方式的封装) 开始使用 点击下载到本地 在了路径 src/assets 下新建文件夹 iconfont ,用来存放字体图标的本地文件 解压下载到本地的字体图标文件,放到 iconfont 文件夹下 如过项目中没有下载 css-loader 依赖包,就进行下载,否则会报错 npm in

  • linux ssh端口转发的三种方式

    ssh是我使用最频繁的两个命令行工具之一(另一个则必须是vim).有了ssh,我可以远程处理各种可能出现的问题而无需肉身到现场. 这几天teamviewer被黑的事情影响挺大,于是由远程控制想到了内网穿透,自然而然的想到了ssh的端口转发也能实现内网穿透.再细想一下,发现ssh隧道.或者说端口转发,竟然实现了正向代理.反向代理和内网穿透三种常用的网络功能,更佩服其功能的强大和使用中的便利. ssh有三种端口转发模式,本文一一对其做简要介绍. 本地转发 本地端口转发(Local Port Forw

  • 详解Docker修改容器端口映射的方法

    直接解决方法 具体可参考Stack Overflow链接 docker运行时存在守护程序,所以我们需要停止docker内运行的容器和docker服务.具体可参考官网给出的守护程序解释 docker stop 容器id //CentOS下停止docker服务(Ubuntu类似) sudo systemctl stop docker 使用以下命令找到已创建容器的hostconfig.json和config.v2.json配置文件. find / -name hostconfig.json //或co

随机推荐