通过端口转发实现docker容器运行时端口更改

通过端口转发实现docker容器运行时端口更改

前言

关于修改docker正在运行中容器端口,网上大部分分为3类: 1. 删除原有容器重新创建;2. 改配置文件;3. 在现有容器上新提交镜像,用新镜像起新的容器。 1和3属于同一种流派,抛弃现有容器,新起一个,2需要重启docker服务。3种方法都会对容器正在运行的服务或多或少有点影响。本文通过端口映射实现。

启动容器

我们以redis作为案例。在传统方法中我们启动redis并将其绑定到本地6379端口上可能是这样的

docker run --name redis01 -d -p 6379:6379 redis

然后我们本机6379就被docker监听来转发redis01容器的流量了请添加图片描述
现在我们使用我们的nat+端口转发来不影响容器本身的情况下动态绑定至本机6380端口
正常启动一个redis容器请添加图片描述

查看容器ip地址

使用命令docker network inspect bridge查看这个容器ip地址.这个命令会显示docker默认的桥接网络中所有容器ip和它们的地址。 你用ip a 或ifconfig命令只能看到它的虚拟网关docker0,看不到容器具体的ip地址。拿到地址后,你顺着这个ip加端口是能够访问redis的(这一步在项目中调docker api会简洁许多 network inspect和使用container inspect都可以拿到容器ip地址,使用api操作的话推荐container inspect,用shell在终端操作看起来会比较麻烦)
请添加图片描述
或者使用 docker container inspect redis02 | grep IPAddress
请添加图片描述

端口转发

拿到容器ip过后就可以做端口转发,后续要换容器或本机映射的端口也只需改端口转发这一块不需要去动docker。 我们这里为了方便就用nginx做转发演示就行了请添加图片描述
nginx 配置文件新增stream块,nginx 反向代理tcp配置,这个不清楚可以去自行google
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值