docker 网络简介

docker 在安装时会默认创建三个网络,bridge(创建容器默认连接到此网络)、 nonehost

  • 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 创建一个容器的时候,会执行如下操作:

  1. 创建一对虚拟接口,分别放到本地主机和新容器中;
  2. 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 veth65f9
  3. 容器一端放到新容器中,并修改名字作为 eth0,这个接口只在容器的命名空间可见;
  4. 从网桥可用地址段中获取一个空闲地址分配给容器的 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

  1. 查询宿主机 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

可以发现宿主机的 IP172.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 名称来解析宿主机 IPhosts 映射在 C:\Windows\System32\drivers\etc\hosts,文件内容如下:

http://localhost:4780 => http://host.docker.internal:4780

参考

官网
Docker网络
Docker网络详解——原理篇
Docker容器访问宿主机网络

docker 容器访问宿主机服务相关推荐

  1. docker 容器访问宿主机的解决方式

    需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务. 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip ...

  2. mac for docker访问宿主机服务

    pod访问mac主机网络 Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,因此Docker For Mac没有 ...

  3. DOCKER容器与宿主机同网段互相通信

    相关阅读: Docker容器时间与宿主机同步 使用Docker搭建WordPress博客 Docker私有仓库搭建及镜像删除 Docker镜像的导入和导出 在Docker上部署Ambari 博主最近在 ...

  4. Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

    Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 参考文章: (1)Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 (2)https://www.cnbl ...

  5. 容器访问宿主机数据库_docker从容器中怎么访问宿主机

    展开全部 例如你的62616964757a686964616fe4b893e5b19e31333433626437docker环境的虚拟IP是192.168.99.100,那么宿主机同样会托管一个和1 ...

  6. Doker : Docker 容器与宿主机共享文件

    1.美图 2.概述 docker run-it -v /宿主机绝对路径目录:/容器内目录 镜像名 这样的话,你无论在哪个地方创建文件,都能在对方目录下看到数据 绑定成功的标志

  7. docker容器内服务访问宿主机服务

    我的个人博客:逐步前行STEP 本文背景: 操作系统:macOs 笔者的docker虚拟机中运行了nginx.node服务用来部署一个前后端分离的网站,但是由于docker内的node服务运行效率极低 ...

  8. docker容器和宿主机的主机名映射失败

    一.为什么将 Oracle 部署在 docker容器中 我们首先通过 docker 安装了 oracle11g 版本的 Oracle 数据库--不要问我为什么通过 docker 安装数据库,正确做法或 ...

  9. docker容器无法访问宿主机报出 No route to host

    项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...

  10. docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip

    自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信. 一.端口映射(局域网,外网 ...

最新文章

  1. c++局部对象是什么_面向对象三大特征: 封装
  2. 1、用Anaconda配置Windows环境下的tensorflow(CPU版本)
  3. 安卓抓包工具 linux,Android 下使用tcpdump网络抓包方法
  4. 添加phpiredis扩展的时候报错
  5. PL/SQL Developer Initialization erro
  6. 基于JAVA+SQL Server数据库项目——学生校园卡管理系统(SSH框架)
  7. 简单图片隐写术练习题
  8. 财税打印机LQ 670K+ win10驱动
  9. 最小二乘法求解线性回归模型及求解
  10. 单片机定时器TMOD与TCON详解!
  11. Flutter-防京东商城项目-修改收货地址 删除收货地址-43
  12. matlab截掉空间曲面一部分,用Matlab作空间曲面的切平面及法线图像.ppt
  13. AI笔记: 数学基础之齐次与非齐次线性方程组解的结构定理
  14. 列主元Guass消去法
  15. 从零开始学习3D可视化之爆炸图
  16. Linux上安装SAPGUI(附安装包)
  17. MongoDB文档增删改查
  18. Win10防火墙端口设置不起作用
  19. Ubuntu下编译OpenHarmony
  20. linux 终端窗口最大化,如何设置终端打开最大化

热门文章

  1. 公布网贷者“黑名单” 涉嫌侵犯个人隐私
  2. html 表格双击事件,bootstrap table onDblClickCell双击单元格事件
  3. java awt addMouseListener 双击事件
  4. Hardhat 学习笔记
  5. hardhat 教程及 hardhat-deploy 插件使用
  6. 优雅的处理你的Java异常
  7. js原生下载excel(xlxs及xls格式)、word、png(图片格式)方法
  8. Google微软IBM能打败亚马逊AWS的理由很丰满,进展却骨感
  9. 短进程优先的调度算法详解
  10. 2017(第六届)国际智慧城市峰会暨智慧城市新科技博览会在沪召开