Docker容器访问宿主机网络

Docker容器通过独立IP暴露给局域网的方法 Docker容器非常轻量,系统开销非常少,比VMware或者VirtualBox用起来方便,部署起来也非常容易。官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用。一般过程是: 1、Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器 2、宿主机可以打开防火墙让局域网其他设备通过访问宿主机的端口进而访问docker的端口 这里 阅读详情

业务请求量小的时候,我们会把一些工程部署到同一台机器上。 这些工程之间也会相互访问。 如果是http的接口, 我们最方便的是使用localhost带地本机的ip。不过结合docker容器后出现了问题。 docker容器中localhost表示容器的ip地址。不是宿主机ip。

其实Docker容器运行的时候有host、bridge、none三种网络可供配置。默认是bridge,即桥接网络,以桥接模式连接到宿主机;host是宿主网络,即与宿主机共用网络;none则表示无网络,容器将无法联网。

host

当容器使用host网络时,容器与宿主共用网络,这样就能在容器中访问宿主机网络,那么容器的localhost就是宿主机的localhost。

在docker中使用–network host来为容器配置host网络:

docker run -d --name nginx --network host nginx

如果使用了host就没有必要使用-p 80:80 -p 443:443来映射端口,是因为本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。虽然通用性好。但是由于host网络没有bridge网络的隔离性好,使用host网络安全性不如bridge高。

bridge

使用桥接的方式我们可以通过参数把宿主机的ip传入到容器中

docker run -d --name nginx --env hostip="172.17.32.60" 

先通过命令看看能不能在容器中取到传入的参数hostip

  • 通过命令登入容器

    # 666555444 是容器ip
    sudo docker exec -i -t 666555444 /bin/bash 
    
  • 在容器中执行命令获取参数

    env|grep hostip
    

得到结果“hostip=10.10.10.10”

下面提供下程序中执行系统命令的方法

  • java
    java中执行带有管道符的命令需要使用exec中传入数组的方式执行

// cmd 可以传入 env|grep hostip
public static String run(String command) {

        String result = "";
        Scanner input = null;
        Process process = null;

        try {
            process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command});
            process.waitFor(2, TimeUnit.SECONDS);
            input = new Scanner(process.getInputStream());
            
            while (input.hasNextLine()) {
                result += input.nextLine() + "\n";
            }
        } catch (Exception e) {
            logger.error(e);
        } finally {
            if (input != null) {
                input.close();
            }
            if (process != null) {
                process.destroy();
            }
        }
        return result;
    }

  • go
// cmd 可以传入 env|grep hostip
func Cmd(cmd string) []byte {
	out, err := exec.Command("/bin/bash", "-c", cmd).Output()
	if err != nil {
		return nil
	}
	return out
}

从系统配合的角度推荐使用传入参数的方式获取系统ip
1. 安全性更好
2. 端口和ip或者其他的参数都交给运维,开发和运维解耦,当系统发生部署相关的变化的时候不需要开发关心。

Docker Desktop + WSL2 网络坑:容器无法通过宿主机IP访问的解决方案 阅读详情

相关推荐

VirtualBox NAT网络下 Docker 容器端口映射:3种方案实现宿主机访问

本文详细介绍了在VirtualBox NAT网络环境下实现Docker容器端口映射的3种实用方案,包括VirtualBox端口转发配置、桥接网络模式改造和Docker主机网络模式。通过具体步骤和优缺点对比,帮助开发者解决宿主机访问Docker容器的网络隔离问题,提升开发和测试效率。

chunqingtai2922的博客 454

docker容器访问宿主机网络的方法

1.先查看宿主机是否能访问到外网 ping www.baidu.com 若是ping不通,说明dns没有配对,可以配置一下 2.配置dns(这里以内网ip:10.11.12.13为例) dig @10.11.12.13 www.zyy.com 是通的 vi /etc/resolv.conf 添加 nameserver 10.11.12.13 service network restart 就可以在宿主机上ping通外网了 3.配置docker可使用的网络参数 vi /etc/sysctl.

cocos2dGirl的专栏 1万+

Docker 容器访问宿主机 3 种方案对比:host.docker.internal vs host 网络 vs 桥接 IP

本文深入对比了Docker容器访问宿主机的三种主流方案:host.docker.internal、host网络模式和桥接IP。从技术原理、跨平台兼容性、性能与安全等多个维度进行分析,帮助开发者在不同环境下选择最优方案。特别针对host.docker.internal的配置技巧和host网络模式的安全风险提供了详细指导,适用于开发、测试和生产环境。

weixin_33957648的博客 402

从Docker容器内部访问宿主的IP地址

Docker 提供了一个主机网络,让容器可以共享主机的网络堆栈。这种方法意味着容器内的本地主机解析为物理主机,而不是容器本身。可以手动挂载宿主的网络命名空间到容器内部。选项,这将使得容器共享宿主的网络命名空间,使得容器内部可以直接访问宿主的IP地址。从Docker容器内部访问宿主的IP地址的几种方法,推荐第2种。来代表宿主,这个IP地址通常用于Docker默认的网络桥接模式中。这样,就可以在容器内部直接访问宿主的网络。在Linux系统中,可以使用特殊的IP地址。在运行容器时,可以使用。

Dlite的技术笔记 3546

Docker 容器访问宿主机服务

Docker 容器访问宿主机服务

问天丶天问 5737

Docker容器访问宿主机网络的方法

主要介绍了Docker容器访问宿主机网络的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

从Docker容器中访问宿主机网络

来源于的《从Docker容器中访问宿主机网络》在使用Docker部署应用时,Docker推荐的方式是将应用及其所依赖的服务(MySQL,Redis等)均使用Docker部署,并通过link或自定义网络相连接。但是,当应用所依赖的服务被安装在宿主机上时,我们需要让容器中的应用能够访问到部署在宿主机上的服务。Docker提供的常见网络类型。

m0_52647839的博客 1554

新手必看:如何用Python模拟电动助力转向系统(EPS)的传感器信号处理

本文详细介绍了如何使用Python模拟电动助力转向系统(EPS)的传感器信号处理流程,包括转向力矩、转向角度和车速信号的生成与滤波处理。通过实战代码示例,帮助开发者理解ECU如何计算助力扭矩,并提供了可视化分析和性能优化建议,适合汽车电子系统开发新手学习。

weixin_28327051的博客 356

【Docker网络疑难杂症】:为什么容器无法访问宿主机IP?真相曝光

解决Docker容器无法访问宿主机IP的常见问题,本文详解Linux、Windows和Mac系统下的网络配置差异及正确获取宿主机IP的方法。涵盖host.docker.internal使用、自定义网络设置等实用技巧,帮助开发者快速排查网络故障,值得收藏。

ProcePerch的博客 874

SMR实战指南:从GWAS数据到eQTL分析的完整流程

本文提供了基于汇总数据的孟德尔随机化(SMR)实战指南,详细解析了如何从GWAS汇总数据出发,整合eQTL数据,完成从数据准备、BESD格式转换到最终SMR与HEIDI分析的完整流程。文章重点阐述了核心操作步骤、常见避坑技巧与结果解读,旨在帮助遗传学研究者高效掌握这一分析基因表达与复杂性状潜在因果关系的强大工具。

weixin_29246195的博客 1072

飞书多维表格省钱攻略:1个专业版账号,全员合规用、权限全掌控

像运动馆、 托管班、作业辅导、少儿美术、书法、口才班等等。对于大多数中小团队而言,飞书多维表格的核心需求是“协作高效、数据可控、成本可控”,而“1个专业版账号+多联系人”的模式,恰好完美契合这三点——既不用为不必要的席位付费,又能解锁全部专业功能,还能通过精细化权限管控保障数据安全。尤其是餐饮店、乒乓球训练馆这类个体经营或小型团队,人员分工清晰、权限需求明确,采用这种模式能最大化节省成本,同时提升管理效率。无需复杂的配置,无需额外的技术支持,5分钟就能搭建起全员协作的省钱体系。

涛涛讲AI 2234

【Docker记录】docker四种网络模式,容器localhost访问宿主机端口

在docker容器中访问宿主机端口有时候会显示连接失败。 宿主机明明有8080的服务,容器内确访问不到。 localhost:8080 Docker有四种网络模式 1.host模式 容器和宿主机共享network,这时候localhost就可以访问宿主机端口了。 docker run -d --network host --name nginx 2.container模式 容器A和容器B共享network,就是说容器之间可以通过localhost直接访问。 docker run

每一步,都在缩短你与梦想的距离。 1万+

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

Docker容器如何优雅地访问宿主机网络

某些时候,我们会有在容器内容访问宿主机某个服务的需求,比如现在 openai 无法直接访问,需要给项目添加代理,我的项目支持了通过环境变量指定代理地址。# 运行项目。

陈万洲的专栏 3118

智能座舱架构与芯片- (9) 音频篇 上

从A2B收发器衍生出来的简化产品具备各种级别的功能,例如端点从节点(不支持TDM)、简化型主节点(支持较短的电缆和更少的从节点数量),以及简化型端点从节点(支持较短电缆和更少的PDM输入)。例如,AVB中的talker和listener是不同的设备,它们的参考时钟源可能并不相同。传统的车载收音机通过天线接收无线电信号,然后由调谐模块(Tuner)进行信号调谐,信道过滤,信道均衡,多路改善,信号解调等,转为数字信号后再交给DSP进行立体声解码,噪声抑制,弱信号处理,最后从车载音响系统进行播放。

joanna_xiao的博客 4910

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1283

Docker容器访问宿主机网络方法

最近部署一套系统,使用nginx作反向代理,其中nginx是使用docker方式运行: 1 $ docker run -d --name nginx $PWD:/etc/nginx -p 80:80 -p 443:443 nginx:1.15 需要代理的API服务运行在宿主机的 1234 端口, nginx.conf 相关配置如下: 1 2 3 4 5 6 7 8 server

qingfenglu的专栏 1万+

12、激光制造中人工智能与机器学习的应用及挑战

本文探讨了人工智能与机器学习在激光制造中的应用,重点分析了图像分类技术在质量检测中的多种方法及其性能对比,包括基于贝叶斯分类、卷积神经网络(CNN)和多尺度CNN的技术。同时,文章指出了AI在激光制造中面临的五大挑战:鲁棒性、安全性、可解释性、责任归属和可预测性,并提出了相应的解决思路。此外,还介绍了激光制造的主要应用技术如切割、焊接和增材制造的流程、优势与局限性,并通过对比表格直观展示不同技术的特点。最后展望了未来激光制造向智能化、自动化和可持续化发展的趋势。

rgv234567的博客 139

linux容器返回宿主机,Linux下Docker容器访问宿主机网络

0.背景docker启动时,如果创建了自定义的docker网络:将容器run在该网络中时,容器访问的localhost不是宿主机的localhost.1.解决1.1 启动时该为host网络模式启动--network host示例# host网络模式,无需映射端口. (\表示换行)docker run -d --name konga --network host -e "NODE_EN...

weixin_39528697的博客 758

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1391

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Docker网络配置终极指南】:揭秘容器访问宿主机IP的5种方法及最佳实践

掌握Docker容器内访问宿主机IP的5种实用方法,解决开发与部署中的网络互通难题。涵盖host.docker.internal、自定义网络、host模式等场景,安全高效,跨平台兼容。运维和开发人员必藏指南,值得收藏。

LogicNest的博客 1282

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Docker 实战:解决容器内应用无法访问宿主机localhost服务的 3 种网络配置方案

问题根因:容器网络隔离导致localhost解析错误。上述方案均通过重新定向访问地址来解决。方案比较方案一()最便捷,但需环境支持。方案二(Host Network)最简单直接,但牺牲安全性。方案三(宿主机 IP)最通用,但需注意 IP 稳定性。通用建议测试前,确保宿主机服务已运行并监听正确端口(如0.0.0.0生产环境优先方案一或三,避免 Host Network 的安全风险。使用工具(如curl或ping。通过合理配置网络,您可以高效解决容器访问宿主机服务的问题。

2501_93892127的博客 991

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Docker 自定义网络踩坑:容器怎么访问宿主机服务?

docker 容器的流量进宿主机,走的是「forward」链,不是「input」链。关键点:Kuma 用的是 compose 自动创建的自定义网络,名字形如 <项目名>_default,不是默认的 bridge。就像你住在一个小区,要去隔壁小区敲朋友家的门,明明知道门牌号,但就是走不过去。关键:ufw 默认会拦 docker 网桥到宿主机的流量,需要显式放行 docker 网段,而不是公网。前者只放 docker 内部,后者放公网。容器是个独立的小世界,里面的 127.0.0.1 是容器自己,不是宿主机。

2601_97080082的博客 210

【docker网络】跨越边界:容器访问宿主机的三种网络模式实战解析

本文深入解析Docker容器访问宿主机的三种网络模式:host模式、host.docker.internal和桥接模式。通过实战案例和性能对比,帮助开发者解决容器网络隔离带来的连接问题,提升跨平台开发效率。特别推荐host.docker.internal方案,确保团队协作一致性。

weixin_33994429的博客 605
上一篇: 分库分表
下一篇: linux定时任务
RobertLee~~~~~~~~
博客等级 码龄18年 14粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值