首页 文章 精选 留言 我的

精选列表

搜索[推荐引擎],共10000篇文章
优秀的个人博客,低调大师

docker容器端口IP规划及端口动态扩容 推荐

docker容器一旦启动,参数就无法改变,生产环境中最常变的就是端口映射,为了解决这个问题,那么首先就要规划好,本文列出了两种端口规划方案,如果后续维护中出现了要增加端口映射的场景,本文也给出了动态端口映射扩容方案。 1、单IP多容器映射规划方案 此种环境适用只有单个IP环境下,如云主机等。 1.1 端口映射规划表格: 规划不同的端口段,映射到容器从而对外提供服务。 主机名称 ssh映射 mysql映射 nginx映射 redis映射 redis-test 51000 22 51001 3306 51004 80 51002 6379 51005 8000 51003 6381 51006 8888 scheduler-test 52000 22 52001 3306 52004 80 52002 6379 52005 8888 52003 6381 52006 8000 … … … … … … … … … 1.2 对应容器启动命令: docker run -h="redis-test" --name redis-test -d -p 51000:22 -p 51001:3306 -p 51003:6379 -p 51004:6381 -p 51005:80 -p 51006:8000 -p 51007:8888 debian02 /etc/rc.local docker run -h="salt_zabbix_manager02" --name salt_zabbix_manager02 -d -p 52000:22 -p 52001:3306 -p 52003:6379 -p 52004:6381 -p 52005:80 -p 52006:8000 -p 52007:8888 debian02 /etc/rc.local 1.3 上述启动参数解释: -h 是指启动后容器中的主机名。 --name 是宿主机上容器的名称,以后启动停止容器不必用容器ID,用名称即可,如docker stop redis-test。 -d 以后台形式运行。 -p 指定映射端口,如果需要映射UDP端口,则格式是 -p3000:3000/udp。 debian02 是基础镜像名称。 /etc/rc.local 是容器的启动命令,把多个启动脚本放/etc/rc.local中,方便多个程序随容器开机自启动。 #关于docker的安装、初步使用、命令详解、镜像制作、容器迁入迁出等,请参考我另一篇文章:http://yangrong.blog.51cto.com/6945369/1551327 2、多IP多容器映射规划方案 此规划比较适用于内网测试研发环境,所有对外访问IP都需要配置在宿主机上,如以第二IPeth0:1,eth0:2这种形式配置,然后每个IP和容器的端口映射配置就可以一致了。 2.1 端口与IP映射规划表格: (此处是内网IP,宿主机IP是10.28.103.1) 主机名称 对外访问IP 容器开放端口 操作系统 iframe-test 10.18.103.2 22 3306 80 8000 8888 443 6379 6381 debian7 web-test 10.18.103.3 22 3306 80 8000 8888 443 6379 6381 debian7 2.2 对应容器启动命令: docker run -h="iframe-test" --name iframe-test -d -p 10.18.103.2:22:22 -p 10.18.103.2:3306:3306 -p 10.18.103.2:6379:6379 -p 10.18.103.2:6381:6381 -p 10.18.103.2:80:80 -p 10.18.103.2:8000:8000 -p 10.18.103.2:8888:8888 -p 10.18.103.2:443:443debian-iframe-test /etc/rc.local docker run -h="web-test" --name web-test -d -p 10.18.103.3:22:22 -p 10.18.103.3:3306:3306 -p 10.18.103.3:6379:6379 -p 10.18.103.3:6381:6381 -p 10.18.103.3:80:80 -p 10.18.103.3:8000:8000 -p 10.18.103.3:8888:8888 -p 10.18.103.3:443:443debian-iframe-test /etc/rc.local 3、端口映射动态扩容方案 在工作当中,一般增加新的服务时,就需新增一个端口映射,由于无法动态调整,通常都需要commit到新的镜像,然后在基于新的镜像来起容器,确实是一件很麻烦的事。 但映射的本质,是通过iptables来完成的。所以我们可以动态的用iptables增加端口映射即可,如下: 3.1 用iptables查看容器映射情况: root@qssec-iframe:~# iptables -t nat -nvL … Chain DOCKER (2 references) pktsbytes target prot opt in outsource destination 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8000 to:172.17.0.3:8000 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:172.17.0.3:443 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 to:172.17.0.3:3306 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6379 to:172.17.0.3:6379 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6381 to:172.17.0.3:6381 3470 190K DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.3:80 0 0 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888 to:172.17.0.3:8888 41 2336 DNAT tcp-- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:50000 to:172.17.0.3:22 #从这里可以找到docker容器里使用的IP,然后在用iptables增加映射即可。 3.2 举例新增zabbix端口的映射: 3.2.1 单IP单容器端口扩容: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.3:10051 3.2.2 单IP多容器端口扩容: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50010 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50011 -j DNAT --to-destination 172.17.0.3:10051 #另一个容器则可以规划为60010,60011,这样在zabbix监控的时候,就需要指定客户容器的端口连接了。 3.2.3 多IP多容器端口扩容: iptables -t nat -A PREROUTING -d 10.18.103.2 -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -d 10.18.103.2 -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.3:10051 #iptables -t nat -A PREROUTING -d 10.18.103.3 -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.4:10050 #iptables -t nat -A PREROUTING -d 10.18.103.3 -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.4:10051 #这样zabbix连接10.18.103.2,3的正常zabbix端口就可以了。 关于docker的安装、初步使用、命令详解、镜像制作、容器迁入迁出等,点击参考我另一篇文章: >>运维人员的解放----Docker快速部署

优秀的个人博客,低调大师

开源游戏引擎 Godot Engine 4.7.1 发布

Godot 4.7.1 现已发布,这是一个维护版本。共有 42 位贡献者提交了 78 项修复,一些更新内容如下: 2D:改进 2D editor dropping code(GH-119418)。 3D:修复闭合Curve3D的 first/last point 缺少 in/out control point(GH-120684)。 Animation:仅在保存/加载项目时访问动画折叠配置文件(GH-120403)。 Assetlib:将 Asset Store 的默认排序方式设置为最高分(GH-121112)。 Editor:防止非主线程发出 EditorFileSystem 更改信号(GH-115083)。 Editor:对过长的项目标题进行换行处理(GH-119580)。 GUI:弹出菜单显示时不要自动打开虚拟键盘(GH-120768)。 GUI:修复Tree::_get_item_focus_rect中的崩溃问题 (GH-120538) 。 GUI:修复触摸屏上的 scene tree drag-n-drop 回归问题(GH-120456)。 GUI:修复GraphEdit中连接线显示异常的问题(GH-120488)。 Input:Android:修复运行游戏时 EditorSettings 未实例化错误(GH-120723)。 Input:修复在 Android 上使用soft keyboard 时,退格键无法删除任何输入字段中已存在的文本的问题(GH-119798)。 Navigation:修复暂停恢复后 navigation agents 无条件添加到避让模拟中的问题(GH-120249)。 Network:在CookieContextMbedTLS::clear中设置 inited=false 以避免意外的 double destruction(GH-120371)。 Rendering:修复了比例不均匀的网格实例上灯光闪烁的问题(GH-119784)。 Rendering:修复正交相机方向阴影剔除(GH-120711)。 Rendering:修复实例停止移动后,先前变换仍被记住 2 帧的问题(GH-119941)。 Rendering:跳过已跳过的着色器变体有效载荷,以避免读取不正确的数据(GH-119792)。 详情可查看:https://godotengine.org/article/maintenance-release-godot-4-7-1/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册