Docker 如何动态修改容器端口映射
Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的。但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的。那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看--->
端口映射方法1
通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.json。默认路径是/var/lib/docker/containers/<容器名称>。
首先通过systemctl stop docker关闭Docker服务,其次修改config.v2.json文件的ExposedPorts配置信息添加容器内部端口例如"8080/tcp":{},然后修改hostconfig.json中的PortBindings配置信息如下文所示。
完成以上配置后systemctl restart docker重启docker服务,并且重启指定容器就可访问对应的端口。(该方法会有风险不推荐频繁使用)
"Config": {
"ExposedPorts": {
// 添加内部端口5432映射
"5432/tcp": {},
"8080/tcp": {}
},s
...
},
"PortBindings":{
// 添加内部端口以及外部端口15432
"5432/tcp":[
{
"HostIp":"",
"HostPort":"15432"
}
],
"8080/tcp":[
{
"HostIp":"",
"HostPort":"28080"
}
]
},
端口映射方法2
Docker的网络端口映射原理是通过Iptables实现端口转发,基于这个原理我们可以直接使用iptables将端口转发到目标容器Ip上。通过以下的命令即可实现端口转发。该方式依赖于Iptables的规则,部分场景下可能会导致Iptables的规则冲突从而影响容器的有效启动。
# 端口映射
iptables -t nat -A DOCKER -p tcp --dport <容器外部端口> -j DNAT --to-destination <容器ip>:<容器内部端口>
# 取消端口映射规则
iptables -t nat -D DOCKER -p tcp -d 0/0 --dport <容器外部端口> -j DNAT --to-destination <容器ip>:<容器内部端口>
Docker 如何动态修改容器端口映射的更多相关文章
- Docker修改已创建容器端口映射
修改已创建容器端口映射. 通过编辑 hostconfig.json 文件来修改 Docker 容器的端口映射 该文件地址:/var/lib/docker/containers/[hash_of_the ...
- 修改docker容器端口映射的方法
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...
- 如何修改Docker已运行实例的端口映射
如何修改Docker已运行实例的端口映射 Docker的端口映射,往往出现在两个阶段需要处理: 1.是在docker启动前就已经确定好,哪个docker实例映射哪个端口(往往这个情况比较,需要提前做规 ...
- Docker容器(三)——容器端口映射
(1).容器端口映射 容器的端口映射用到了-p选项,-p [物理机端口]:[容器实例端口] 让centos:httpd运行在后台 [root@youxi1 ~]# docker run -d -p 8 ...
- 【Docker】-NO.132.Docker.1 -【Docker 修改容器端口】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- 【docker】追加docker容器端口映射的方法
docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 但这样太麻烦了.现在有新方案来解决掉: ...
- docker的简单操作和端口映射
一:简介 Docker镜像 在Docker中容器是基于镜像启动的 镜像是启动容器的核心 镜像采用分层设计,最顶层为读写层 使用快照COW技术,确保底层不丢失 通过ifconfig(ip a)来查看d ...
- Docker追加容器端口映射
参考文章: https://blog.csdn.net/chouzhou9701/article/details/86725203
- 如何修改运行中的docker容器的端口映射和挂载目录
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
随机推荐
- 一听就懂:用Python做一个超简单的小游戏
写它会用到 while 循环random 模块if 语句输入输出函数
- Git简易教程-安装及简单使用
Git是一种版本控制器,在项目开发中可以用来托管代码 一.下载安装Git 1. Git下载 地址:https://git-scm.com/download/win 2. 安装 检验是否安装成功 电脑桌 ...
- matplotlib学习日记(七)---误差棒图
(一)误差棒图----误差置信区间的表示 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.1, 0.6, 10 ...
- TypeError: filter() got an unexpected keyword argument 'XXX'
Flask使用SQLAlchemy查询报如下错误: TypeError: filter() got an unexpected keyword argument 'XXX' 出错原因: 查询错误,应该 ...
- 解决[BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
在开发项目过程中,使用better-scroll插件中遇到了滚动一次重复提示相同错误 [BScroll warn]: Can not resolve the wrapper DOM. Vue bett ...
- VS挂接崩溃包
主要用来在用户机器上对目标进程生成dump文件,定位"卡死".Crash等问题.推荐相关工具DumpTool,WinCrashReport. DumpTool 下载 WinCras ...
- JAVA十大经典排序算法最强总结(含JAVA代码实现)
0.排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序. 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定:如果a原本在b的前面,而a=b,排 ...
- CentOS 8 安装mysql8.0.21
1.使用dnf安装mysql(遇到暂停按y)dnf install @mysql 2.安装完成使用下面命令启动MySQL服务systemctl enable --now mysqld 3.查看服务是否 ...
- 无延时去斗按键实现方法(不好CPU)
这一灵感来源于定时器计数的方法,最后可以实现的效果跟咱们电脑键盘按键的效果一样!我先来介绍下基本原理吧! 采用定时器中断的方法,比如定时器终端我们设置为5ms,我们需要按键按下超过40ms时才算有按键 ...
- rocketmq 架构设计
1 消息存储 消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构.PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面 ...