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

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

一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如

docker run -it -d --name [container-name] -p 8088:80 [image-name]

这里是将容器内的80端口到宿主机的8088端口

在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式:

方式一:将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口

1、停止现有容器

docker stop container-name

2、将容器commit成为一个镜像

docker commit -a "作者" -m "a new image" [容器名称或id] [打包的镜像名称]:[版本标签]

常用OPTIONS说明:

# -a :提交的镜像作者
# -c :使用Dockerfile指令来创建镜像
# -m :提交时的说明文字
# -p :在commit时,将容器暂停

或者使用export和import将容器导出为镜像

docker export 容器ID > 压缩包名称.tar
cat 压缩包名称.tar | docker import - 镜像名称:版本标签

例如:

导出

$ docker export 1e560fca3906 > ubuntu.tar

导入

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

另外,也可以通过指定 URL 或者某个目录来导入,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo:v1

3、用新的镜像生成一个新的容器并配置需要的映射端口

docker run -it -d --name container-name -p p1:p1 -p p2:p2 new-image-name

方式二:修改要端口映射的容器的配置文件

1、查看容器的信息

docker ps -a

2、查看容器的端口映射情况,在容器外执行:

docker port 容器ID 或者 docker port 容器名称

3、查找要修改容器的全ID

docker inspect 容器ID |grep Id

4、进到/var/lib/docker/containers 目录下找到与全 Id 相同的目录,修改 其中的hostconfig.json 和 config.v2.json文件:

注意:若该容器还在运行中,需要先停掉

docker stop 容器ID

再停掉docker服务

systemctl stop docker

5、修改hostconfig.json如下,添加端口绑定"9003/tcp": [{"HostIp": "","HostPort": "9003"}],表示绑定端口9003

6、修改config.v2.json在ExposedPorts中加上要暴露的端口,即9003

最后改完之后,重启docker服务

systemctl restart docker

此时,可以查看宿主机端口是否和容器内端口映射成功,在容器外执行

netstat -an |grep 宿主机的映射端口

到此这篇关于对已有的docker容器增加新的端口映射的文章就介绍到这了,更多相关docker容器增加新的端口映射内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-01-20

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

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

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

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

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

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

详解Docker 端口映射与容器互联

1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射.当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万): [root@docker ~]# docker run -d --name nginx_1 -P nginx:latest

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

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

详解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

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动态给容器Container暴露端口操作

查看Container的IP地址 docker inspect <container name or id>| grep IPAddress 查看Container的映射的端口 docker port <container name or id> eg. docker port d8dac7399647 docker port hfq-jedi-zxf-eden 用iptables查看容器映射情况 iptables -t nat -nvL iptables -t nat -nvL

JavaScript动态修改网页元素内容的方法

本文实例讲述了JavaScript动态修改网页元素内容的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码当用户点击提交按钮后,通过元素的textContent或者innerHTML动态指定元素的内容 <script type="text/javascript"> function showCard() { var message = document.getElementById("CCN").value; var element = docu

Android编程动态修改RelativeLayout宽高的方法

本文实例讲述了Android编程动态修改RelativeLayout宽高的方法.分享给大家供大家参考,具体如下: 我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改Relativelayout的LayoutParams就可以.代码一般如下: RelativeLayout ss = (RelativeLayout) findViewById(R.id.myRelativeLayout); ss.setLayoutParams(new RelativeLayout.

javascript动态修改Li节点值的方法

本文实例讲述了javascript动态修改Li节点值的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml";>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

JavaScript动态修改弹出窗口大小的方法

本文实例讲述了JavaScript动态修改弹出窗口大小的方法.分享给大家供大家参考.具体如下: 下面的JS代码演示了如何通过window.open弹出一个新的窗口,然后动态修改窗口大小 <!DOCTYPE html> <html> <head> <script> var w; function openwindow() { w=window.open('','', 'width=100,height=100'); w.focus(); } function

CentOS6.5与CentOS7 ssh修改默认端口号的方法

本文实例讲述了CentOS6.5与CentOS7 ssh修改默认端口号的方法.分享给大家供大家参考,具体如下: CentOS6.5ssh修改默认端口号 先查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 新ssh端口号在这个范围内即可,如41134 第一步: vi /etc/sysconfig/iptables 找到现有的ssh那行,把22修改为新的SSH端口号


原网址: 访问
创建于: 2022-11-25 17:41:49
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论