docker 容器访问宿主机服务
docker 网络简介
docker
在安装时会默认创建三个网络,bridge
(创建容器默认连接到此网络)、 none
、host
。
host
直接和宿主机共用网络。bridge
网络隔离,通过虚拟网桥(一般是docker0
)与宿主机通信。none
禁用网络功能。
docker network ls
可查看网络设置,输出如下:
NETWORK ID NAME DRIVER SCOPE
1363ad4ba2a5 bridge bridge local
715796504a13 host host local
723f2680cdad none null local
创建容器时的网络初始化
Docker
创建一个容器的时候,会执行如下操作:
- 创建一对虚拟接口,分别放到本地主机和新容器中;
- 本地主机一端桥接到默认的
docker0
或指定网桥上,并具有一个唯一的名字,如veth65f9
; - 容器一端放到新容器中,并修改名字作为
eth0
,这个接口只在容器的命名空间可见; - 从网桥可用地址段中获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡
veth65f9
。
完成这些之后,容器就可以使用 eth0
虚拟网卡来连接其他容器和其他网络。
使用宿主机 IP
host 模式
该模式下容器可以直接使用 127.0.0.1
, localhost
来访问宿主机。
在 docker
中使用 --network host
来为容器配置 host
网络:
docker run --network host host-main
docker-compose
使用 network_mode: "host"
进行配置:
version: "3"services:main:build:context: .dockerfile: ./dockerfilenetwork_mode: "host"
bridge 模式
Linux
可以使用宿主机在 docker0
上的 IP
来代替 localhost
。
- 查询宿主机
IP
ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:5a:02:53:f5 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:5aff:fe02:53f5/64 scope link valid_lft forever preferred_lft forever
可以发现宿主机的 IP
是 172.17.0.1
,那么将地址 http://localhost:4780
改为 http://172.17.0.1:4780
即可访问。
Windows
同理,Windows
中我们也可以找到虚拟网卡,查看 IP
进行更换
http://localhost:4780
=> http://192.168.236.129:4780
Windows
还可以通过 host.docker.internal
这个特殊的 DNS
名称来解析宿主机 IP
。hosts
映射在 C:\Windows\System32\drivers\etc\hosts
,文件内容如下:
http://localhost:4780
=> http://host.docker.internal:4780
参考
官网
Docker网络
Docker网络详解——原理篇
Docker容器访问宿主机网络
docker 容器访问宿主机服务相关推荐
- docker 容器访问宿主机的解决方式
需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务. 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip ...
- mac for docker访问宿主机服务
pod访问mac主机网络 Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,因此Docker For Mac没有 ...
- DOCKER容器与宿主机同网段互相通信
相关阅读: Docker容器时间与宿主机同步 使用Docker搭建WordPress博客 Docker私有仓库搭建及镜像删除 Docker镜像的导入和导出 在Docker上部署Ambari 博主最近在 ...
- Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 参考文章: (1)Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 (2)https://www.cnbl ...
- 容器访问宿主机数据库_docker从容器中怎么访问宿主机
展开全部 例如你的62616964757a686964616fe4b893e5b19e31333433626437docker环境的虚拟IP是192.168.99.100,那么宿主机同样会托管一个和1 ...
- Doker : Docker 容器与宿主机共享文件
1.美图 2.概述 docker run-it -v /宿主机绝对路径目录:/容器内目录 镜像名 这样的话,你无论在哪个地方创建文件,都能在对方目录下看到数据 绑定成功的标志
- docker容器内服务访问宿主机服务
我的个人博客:逐步前行STEP 本文背景: 操作系统:macOs 笔者的docker虚拟机中运行了nginx.node服务用来部署一个前后端分离的网站,但是由于docker内的node服务运行效率极低 ...
- docker容器和宿主机的主机名映射失败
一.为什么将 Oracle 部署在 docker容器中 我们首先通过 docker 安装了 oracle11g 版本的 Oracle 数据库--不要问我为什么通过 docker 安装数据库,正确做法或 ...
- docker容器无法访问宿主机报出 No route to host
项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...
- docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信. 一.端口映射(局域网,外网 ...
最新文章
- c++局部对象是什么_面向对象三大特征: 封装
- 1、用Anaconda配置Windows环境下的tensorflow(CPU版本)
- 安卓抓包工具 linux,Android 下使用tcpdump网络抓包方法
- 添加phpiredis扩展的时候报错
- PL/SQL Developer Initialization erro
- 基于JAVA+SQL Server数据库项目——学生校园卡管理系统(SSH框架)
- 简单图片隐写术练习题
- 财税打印机LQ 670K+ win10驱动
- 最小二乘法求解线性回归模型及求解
- 单片机定时器TMOD与TCON详解!
- Flutter-防京东商城项目-修改收货地址 删除收货地址-43
- matlab截掉空间曲面一部分,用Matlab作空间曲面的切平面及法线图像.ppt
- AI笔记: 数学基础之齐次与非齐次线性方程组解的结构定理
- 列主元Guass消去法
- 从零开始学习3D可视化之爆炸图
- Linux上安装SAPGUI(附安装包)
- MongoDB文档增删改查
- Win10防火墙端口设置不起作用
- Ubuntu下编译OpenHarmony
- linux 终端窗口最大化,如何设置终端打开最大化
热门文章
- 公布网贷者“黑名单” 涉嫌侵犯个人隐私
- html 表格双击事件,bootstrap table onDblClickCell双击单元格事件
- java awt addMouseListener 双击事件
- Hardhat 学习笔记
- hardhat 教程及 hardhat-deploy 插件使用
- 优雅的处理你的Java异常
- js原生下载excel(xlxs及xls格式)、word、png(图片格式)方法
- Google微软IBM能打败亚马逊AWS的理由很丰满,进展却骨感
- 短进程优先的调度算法详解
- 2017(第六届)国际智慧城市峰会暨智慧城市新科技博览会在沪召开