docker 的 网络模式

docker 自带 3 种 网络模式:分别是bridge网络,host网络,none网络,可以使用  docker network ls  命令查看。

1.none网络

这种网络模式下容器只有lo回环网络,没有其他网卡。none网络可以在容器创建时通过  --network=none 来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

2.host网络

通过命令--network=host指定,使用host模式的容器可以直接使用docker host的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

3.bridge网络

容器的默认网络模式,docker在安装时会创建一个名为docker0的Linux bridge,在不指定--network的情况下,创建的容器都会默认挂到docker0上面。

创建多个容器,都不指定 net 情况下 , docker network inspect bridge,  查看 bridge 网络情况。

查看 主机网桥情况  ,brctl  show, 在 docker0  网桥下有3个接口,对应前面容器的各自的虚拟网卡。创建一个容器之后一个新的网络接口被挂载到了docker0上,这个就是容器创建时创建的虚拟网卡。bridge模式为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,使容器之间,容器和docker host之间实现网络隔离。

这里可以看出 docker0 网桥 上对应有3个容器挂靠的虚拟网卡, 此 3 个容器之间可以互相通信,因为在同一个网桥下。

思考?? 不同网桥下的容器间 能通信吗?

1. 先手动建立一个 bridge 模式的新 网桥, docker network  create --driver  bridge  --subnet=172.18.0.0/16  --gateway=172.18.0.1  new_bridge

2. docker network ls   可以查看 docker 下现在的网络模式(新加的那个)

3.  docker  run  -name test1  -ti  --net=new_bridge   镜像名   (用新网桥的一个容器 test1)

4. docker  run  -name test2  -ti   --net=bridge  镜像名   (用 docker 默认网桥的一个容器test2)

5. 进入到其中一个容器 ,ip a  查看网卡,ping  另一个容器IP

6. 进另一个容器,同上。 两个容器IP段不一样。 不同网桥,会创建不同网段的虚拟网卡给容器 。

7. 不同网桥下的容器间 不能ping通, 在于docker 设计时候就隔离了不同网桥  

8. docker  network  connect   new_bridge   test2   //  为  test2 容器添加一块 new_bridge的 虚拟网卡,这样test2 上会 创建一个新的虚拟网卡,网段就是 新网桥设置的。

9. 如此就能互相ping通。

4.container模式

创建容器时使用--network=container:NAME_or_ID这个模式在创建新的容器的时候指定容器的网络和一个已经存在的容器共享一个Network Namespace,

但是并不为docker容器进行任何网络配置,这个docker容器没有网卡、IP、路由等信息,需要手动的去为docker容器添加网卡、配置IP等。(这个后面在验证)

参考 https://www.cnblogs.com/CloudMan6/p/7096731.html

5.user-defined模式

用户自定义模式主要可选的有三种网络驱动:bridge、overlay、macvlan。bridge驱动用于创建类似于前面提到的bridge网络;overlay和macvlan驱动用于创建跨主机的网络。

前面自定义的网络模式  new_bridge  就是新网络模式。另外两个后面在验证。

docker的端口映射

docker的端口映射,能保证在外部网络 访问 同一设备上不同容器时候 不会因为端口问题产生冲突。

docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器。容器启动时通过-p参数映射端口:

可以使用-p参数显式将一个或者一组端口从容器里绑定到宿主机上,而不仅仅是提供一个端口。注意这里是小写的p,不是大写。

因为该配置依赖于宿主机器,所以Dockerfile里没有对应的指令,这是运行时才可用的配置。-p参数有几种不同的格式:

ip:hostPort:containerPort| ip::containerPort | hostPort:containerPort | containerPort
												

docker 网络模式 和 端口映射的更多相关文章

  1. Docker网络模式

    [编者的话] 本文是<Docker网络及服务发现>一书的一个章节,介绍了搭建Docker单主机网络的基础内容.关于Docker网络的更多内容,包括多主机的网络,请参考该书的其他章节. @C ...

  2. Docker 网络模式和跨主机通信

    Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交 ...

  3. docker网络模式----入门docker的难点

    众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...

  4. docker 网络模式研究了许久,其实我们需要的是docker run -p 80:80命令

    我们只是希望能够从外部访问到docker而已,并不需要去折腾该死的网络模式,桥接,host等等. -p: 端口映射,格式为:主机(宿主)端口:容器端口 sudo docker run -t -i  - ...

  5. Docker网络模式介绍

    一.概述 docker的网络驱动有很多种方式,按照docker官网给出的网络解决方案就有6种,分别是:bridge.host.overlay.macvlan.none.Network plugins, ...

  6. docker 网络模式详解

    一.前言 Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分.因此,我们有必要 ...

  7. Docker网络模式详解

    一.Docker四种工作模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用 ...

  8. [VirtualBox] 1、NAT模式下端口映射

    1.VirtualBox中有4中网络连接方式 VirtualBox中有4中网络连接方式:NAT.Bridged Adapter.Internal.Host-only Adapter,VMWare中有三 ...

  9. Docker网络模式说明

    现在的Docker版本不推荐继续使用Link了,而是推荐用网络模式解决问题,简单讲一下最常用的几个网络模式,其他我用到时候再补充. bridge -net不加参数就是默认的bridge模式,这个默认b ...

随机推荐

  1. 【excel】=EXACT(A1,B1) 比较两个字符串是否相等

    相等返回true 不相等返回false

  2. [转]VS2017避免全部安装至C盘

    VS2017避免全部安装至C盘 版权声明:商业用途请联系博主,非商业转载请标明出处. https://blog.csdn.net/qq_15807167/article/details/7247208 ...

  3. pymongo方法详解

    1.连接mongodb ######### 方法一 ########## import pymongo # MongoClient()返回一个mongodb的连接对象client client = p ...

  4. 企业级Nginx负载均衡与keepalived高可用实战(一)Nginx篇

    1.集群简介 1.1.什么是集群 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器. ...

  5. NetCore 开发时中文编码转换出现异常

    在C#编程的时候难免会遇到需要转换编码的场合. 在Framwork中可以用System.Text.Encoding解决,但是到了core会发现,虽然也有这个东西,但几个关键的中文编码(比如GB2312 ...

  6. Linux基础及入门介绍

    一.linux发展历程 ①1969年unix诞生贝尔实验室 ②谭宁邦:minix unix ③斯托曼(stallman),公司:自由软件基金会(FSF) 项目:GNU 规则:GPL(所有人可以自由传播 ...

  7. Flink之state processor api原理

    无论您是在生产环境中运行Apache Flink or还是在过去将Flink评估为计算框架,您都可能会问自己一个问题:如何在Flink保存点中访问,写入或更新状态?不再询问!Apache Flink ...

  8. java 解决safari下载中文文件名乱码

    主要就是在响应头设置content-disposition,主要遵循 RFC 5987标准. response.setHeader("content-disposition",&q ...

  9. golang --学习笔记 运行时间计算

    package main import ( "fmt" "time" ) func main() { start := time.Now() //do some ...

  10. 《 .NET并发编程实战》阅读指南 - 第8章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.