当zmq 和 docker 都要绑定一个端口时,怎么不修改端口号就能解决冲突?

问题描述

docker容器中的程序需要和外部进行通讯,但是当作为请求方向 响应方发送数据时,外部的进程因为需要绑定的端口被docker占用而绑定失败。

解决方式

方式一:使用请求响应方式,但是将响应端放置到容器内部。

方拾二:使用主机模式运行docker容器。将容器内使用外部网络。

主机模式运行docker 容器

要使用主机模式运行Docker容器,你可以在运行Docker命令时使用--network=host选项。这将使容器共享主机的网络命名空间,意味着容器将直接使用主机的网络,而不是虚拟的网络。

以下是一个示例命令:

bash 复制代码
docker run --network=host -it zmq_demo_v2.1 /bin/bash

在这个例子中,--network=host选项告诉Docker使用主机网络模式运行容器。这样,容器内的应用可以直接绑定到主机的端口,而不需要通过端口映射。

请注意,使用主机网络模式可能会带来安全风险,因为它允许容器访问主机的所有网络资源。因此,你应该只在你完全信任的容器上使用这种模式。

补充

在测试时,如果Linux系统对host的关键字解释有多个的时候,会出现,docker 容器启动时内外部端口映射使用的外部端口号,外部程序还可以绑定,但是双方通信无响应,不能送达。

检查方式:Linux查看host 文件

命令行界面输入:cat /etc/hosts,如果有多个,可以注释掉 127.0.0.1以外的内容行。更新配置之后就可以解决问题了。


分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za

相关推荐
李菠菜20 分钟前
CentOS系统指定版本Docker与Docker-Compose在线安装教程
docker·容器·centos
masx20022 分钟前
升级uptime-kuma版本2.0.0-beta.2的cloudflared版本到2025.4.0
运维·后端
杨凯凡26 分钟前
Linux安全防护:全方位服务安全配置指南
linux·运维·服务器·安全
李菠菜28 分钟前
CentOS系统中重置Root用户密码的完整步骤详解
linux·运维
包达叔32 分钟前
dockercompose文件仓库
docker
Nightwish534 分钟前
Linux随记(十七)
linux·运维·服务器
付出不多1 小时前
Linux——系统安全及应用
linux·运维·系统安全
爱吃龙利鱼1 小时前
rocky9.4部署k8s群集v1.28.2版本(containerd)(纯命令)
云原生·容器·kubernetes
数巨小码人3 小时前
Linux常用指令
linux·运维·服务器
Linux运维老纪3 小时前
Linux之七大难命令(The Seven Difficult Commands of Linux)
linux·运维·服务器·云计算·运维开发