如何对已有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 > 压缩包名称.tarcat 压缩包名称.tar | docker import - 镜像名称:版本标签#例如:#导出$ docker export 1efca3906 > centos.tar#导入$ cat docker/centos.tar | docker import - test/centos:v1#3、用新的镜像生成一个新的容器并配置需要的映射端口docker run -it -d --name container-name -p p1:p1 -p p2:p2 new-image-name
【如何对已有docker容器增加新的端口映射详解】
方式二 修改要端口映射的容器的配置文件(推荐)
#1、查看容器的信息docker ps -a#2、查看容器的端口映射情况,在容器外执行:docker port 容器ID 或者 docker port 容器名称#3、查找要修改容器的全IDdocker 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如下# 格式如:"{容器内部端口}/tcp":[{"HostIp":"","HostPort":"映射的宿主机端口"}]"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"3316"}],"80/tcp":[{"HostIp":"","HostPort":"180"}]}#6、修改config.v2.json在ExposedPorts中加上要暴露的端口# 格式如:"{容器内部端口}/tcp":{}"ExposedPorts":{"22/tcp":{},"80/tcp":{}}
最后改完之后,重启docker服务
systemctl restart docker
此时,可以查看宿主机端口是否和容器内端口映射成功,在容器外执行
netstat` `-an |``grep` `宿主机的映射端口
总结 到此这篇关于如何对已有docker容器增加新的端口映射的文章就介绍到这了,更多相关docker容器增加端口映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 程序员如何优雅地解决线上问题()
- 陪孩子面对压力
- 一位30岁的离婚女性对天下女人的忠告,句句戳心
- 量化日常工作指标
- 许岑,如何成为有效学习的高手
- TypeScript|TypeScript对象的类型-接口
- ts|typescript 中函数参数为对象如何效验
- typescript|TypeScript--笔记二(Map对象、联合类型、接口)
- Typescript|Typescript额外的属性检查 和 对象拥有任意个属性
- json|如何将JSON对象转换为Typescript类