当前位置: 首页 > news >正文

Docker 容器访问宿主机服务

docker 网络简介

docker 在安装时会默认创建三个网络:bridge(默认网络模式)、 none 、host。

  • host 直接和宿主机共用网络。
  • bridge 网络隔离,通过虚拟网桥(一般是 docker0)与宿主机通信。
  • none 禁用网络功能。

解决办法

使用 host模式(常用)

docker 运行容器时 默认桥接网络模式,如果使用 host 模式就可以访问,所以需要将 docker 的网络模式设置为 host 模式。

修改方式

  • docker run 启动容器时加入–net=host
    docker run -d --network=host my-container:latest
  • compose 文件中指定network_mode: “host”,便可以 host 模式运行容器
services:my-service:network_mode: host 

使用host.docker.internal

host.docker.internal 是一个特殊的DNS名称,用于Docker容器内部访问宿主机的地址。当容器运行时,它可以使用此名称直接连接到宿主机上运行的服务,而无需知道宿主机的IP地址。在 container 内,可以直接请求host.docker.internal:PORT,来获取宿主机上提供的各种服务

mac 和 windows

host.docker.internal 在Docker for Mac和Docker for Windows中是预定义的

需要容器应用配置中的 127.0.0.1 替换为 host.docker.internal

linux

在Linux中是不支持的。在Linux中,可以使用–add-host选项手动将宿主机的IP地址添加到容器的/etc/hosts文件中,达到效果。

使用 docker 运行容器 时,加入如下参数

--add-host=host.docker.internal:host-gateway

使用 Docker Compose,则应该将下面的语句加入 container 的声明中:

extra_hosts:- 'host.docker.internal:host-gateway'

使用 docker0 网络的IP

在默认的 bridge 模式下,docker0 网络的默认网关即是宿主机。在容器中使用该 IP 地址即可访问宿主机上的各种服务

  • Linux(Windows)下,docker0 网络通常会分配一个 172.17.0.0/16 的网段,其网关通常为172.17.0.1
  • macOS 下的网段则为 192.168.65.0/24,网关为192.168.65.1

这种情况下,经由 docker0 网桥而来的流量 不经过宿主机的本地回环,因此需要将宿主机上的服务配置为 监听 0.0.0.0

注意: IP 并不一定完全固定,可能会因系统及配置而发生变化,应用也需要更改。

http://www.lryc.cn/news/99894.html

相关文章:

  • Go 发送邮件
  • Spring AOP 的概念及其作用
  • python基础1——环境安装
  • uniapp 中 的progress加载进度条 的使用,在 页面显示数据加载的进度条,使用户的使用体验效果更好
  • 【尚硅谷】第01章:随堂复习与企业真题(Java语言概述)
  • MyBatis的SqlSession理解
  • axios 某个接口使用自己独有的完整地址
  • WEB:Web_python_template_injection
  • 【Android安全】Embedded Trace Microcell模块
  • 修改内核驱动之后-如何给内核打补丁
  • 【javaSE】 类和对象详解
  • 大数据课程D5——hadoop的Sink
  • 【数据结构】27.移除元素
  • 机器学习分布式框架ray运行xgboost实例
  • C++设计模式笔记
  • 简单聊聊创新与创造力
  • 使用TensorFlow训练深度学习模型实战(上)
  • 【Spring】什么是Bean的生命周期及作用域,什么是Spring的执行流程?
  • 立创EDA学习
  • 清风学习笔记—层次分析法—matlab对判断矩阵的一致性检验
  • 大众安徽内推
  • Meta “地平线世界”移动端应用即将上线,手机快乐元宇宙?
  • 更省更快更安全的云服务器,一站式集中管理,随时随地远程——站斧云桌面
  • 出现 Try run Maven import with -U flag (force update snapshots) 的解决方法
  • python多线程
  • Spring Framework 提供缓存管理器Caffeine
  • ZQC的游戏 题解
  • 24考研数据结构-第一章 绪论
  • Gitlab 备份与恢复
  • 数据库—用户权限管理(三十三)