对已有的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容器增加新的端口映射的更多相关文章
- Centos7 docker容器启动后添加端口映射
docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时, ...
- docker容器启动后添加端口映射
DOCKER 给运行中的容器添加映射端口 方法1 1.获得容器IP 将container_name 换成实际环境中的容器名 docker inspect `container_name` | grep ...
- docker的简单操作和端口映射
一:简介 Docker镜像 在Docker中容器是基于镜像启动的 镜像是启动容器的核心 镜像采用分层设计,最顶层为读写层 使用快照COW技术,确保底层不丢失 通过ifconfig(ip a)来查看d ...
- docker已运行容器添加或修改端口映射
# 不推荐方法:将原来的容器提交成镜像,然后利用新的建立的镜像重新建立一个带有端口映射的容器# 推荐方法:## 查看id 就是 容器的 hash_of_the_container 数值 docker ...
- arukas 樱花免费docker容器获取IP和端口
arukas 樱花免费docker容器,可以安装linux系统,但是每隔一段时间会重启,重启以后IP地址和映射到公网的端口都会变,获取IP和端口,我研究了很久终于找到了C#获取IP和端口的办法,用来搭 ...
- 为你的docker容器增加一个健康检查机制
1.健康检查 在分布式系统中,经常需要利用健康检查机制来检查服务的可用性,防止其他服务调用时出现异常.自 1.12 版本之后,Docker 引入了原生的健康检查实现. 如何给Docke配置原生健康检查 ...
- Docker容器 暴露多个端口
1.创建容器是指定 docker run -p <host_port1>:<container_port1> -p <host_port2>:<contain ...
- docker 容器不能访问宿主端口原因
因为数据包到了eth0的 上的iptables 表,首先匹配PREROUTING 链,这个拒绝了来自docker0的流量,从而跳到input链,input没有放开服务端口,所以容器访问宿主端口失败;但 ...
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
随机推荐
- Python3.7 发送邮件 报‘[WinError 10061] 由于目标计算机积极拒绝,无法连接’错误的解决方法
背景: 最近在练习Python 的邮件发送功能 照着教程写了一个简单的demo 结果运行时报如下错误:[WinError 10061] 由于目标计算机积极拒绝,无法连接. 如图: 解决路径如下: St ...
- unittest_TestSuite测试套件(2)
在前面一章中演示了unittest如何执行一个简单的测试,但有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 一个测试文 ...
- linux centos7 修改文件启动报错如何拯救
系统无法启动 CentOS启动的时候读条已经读满,但是没有反应,按下f5键跳出启动列表,最后一条信息:A start job is running for /etc/rc.d/rc.local Com ...
- spring clould -多模块 -swagger2 配置 nginx 的正确设置
#user nobody; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- maven pom.xml 的 spring-boot-maven-plugin 红色报错 解决
解决方法,添加对应的spring boot 版本号即可
- C/C++避免头文件重复包含的方法
C/C++避免头文件重复包含的方法 1. #ifndef 2. #pragma once 3. 混合使用 在实际的编程过程中,因为会使用多个文件,所以在文件中不可避免的要引入一些头文件,这样就可能会出 ...
- FIS本地发布-其他同事通过IP访问
方法很简单,只需在fis的配置文件那里进行修改即可. 文件路径在 C:\Users\Su\AppData\Roaming\npm\node_modules\fis\node_modules\fis-c ...
- mybatis(CRUD)
3.mybatis(CRUD) 有了mybatis,我们要对数据库进行增删改查只需要操作接口和mapper.xml文件,然后进行测试就可以了. 实例代码如下: 接口 public interface ...
- SpringCloud之使用Zookeeper作为注册中心
SpringCloud之使用Zookeeper作为注册中心 linux安装zookeeper 安装zookeeper 关闭linux防火墙 启动zookeeper 1 创建项目导入依赖和配置文件 &l ...
- 集合框架-Map集合练习-Map查表法
1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...