docker的网络分为:单主机、跨主机

这篇先说:单主机

我们先说一下docker的原生网络模式

网络模式 简介 优点  使用场景
none 空网络,没有网络 此网络与外界隔离,安全度非常高 适合公司内部生产密钥
host  容器与宿主机共享namespace 直接使用宿主机的网络,网络性能方面最好。  
bridge 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。    

1、none

none翻译过来就是没有的意思,就是没有网络,对于安全性完全与外界完全隔离。

创建none容器,只有一张lo网卡!

创建参数 --network  none

1 [root@node1 harbor]# docker run -it --name  none --network  none  busybox:latest
2 / # ip a
3 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
4 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
5 inet 127.0.0.1/8 scope host lo
6 valid_lft forever preferred_lft forever

2、host

host翻译为主机,就是主机网络,大致意思就是和宿主机共用的网络;

容器使用host网络,不会去获取新的network namespace,而是和主机共用一个network namespace。

直接使用宿主机的IP、端口号。所以我们在使用host网络发布服务的时候,一定要注意端口冲突这个问题。

创建参数 --network host

[root@node1 harbor]# docker run -it --name host --network host busybox:latest
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:22:6c:1c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::5658:12c2:bb4f:b14e/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue qlen 1000
link/ether 52:54:00:d7:f2:59 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 qlen 1000
link/ether 52:54:00:d7:f2:59 brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 02:42:34:a2:7d:a6 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:34ff:fea2:7da6/64 scope link
valid_lft forever preferred_lft forever
8: br-ffb3d00df08f: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether 02:42:93:76:c6:32 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global br-ffb3d00df08f
valid_lft forever preferred_lft forever
inet6 fe80::42:93ff:fe76:c632/64 scope link
valid_lft forever preferred_lft forever

我的宿主机IP为192.168.1.1,上述的网络配置和主机一模一样

使用场景:对网络传输有较高要求,不二选择!

3、bridge

在说这个桥接模式之前,了解一个词“网桥”

网桥:网桥又叫做桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可以访问服务器。

简单说一下:有点想交换机,但是有区别,具体了解自行查询资料。

正式了解桥接:

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。
图片了解:

创建参数:--network bridge

 1 [root@node1 /]# docker run -it --name bridge --network bridge  busybox:latest
2 / # ip a
3 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
4 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
5 inet 127.0.0.1/8 scope host lo
6 valid_lft forever preferred_lft forever
7 27: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
8 link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
9 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
10 valid_lft forever preferred_lft forever

了解:docker0默认的IP172.17.0.1,分配容器IP都是依此类推。

实操环节:

1、我们来自定义bridge网络

[root@node1 /]# docker network  create  -d bridge  net1    创建一个名为net1的bridge网络
44686c0ae4194a156c309a18d320d3497551900600b0ef28729152004d6cdf05
[root@node1 /]# docker network ls  #查看当前网卡        
NETWORK ID NAME DRIVER SCOPE
74f8ff66202b bridge bridge local

创建基于net1的容器

[root@node1 /]# docker run -itd --name a1 --network net1 busybox:latest
026ff92c05a54803333313fe9da077bb47adb5e3cdb0183e86b5a93e4e350da6
[root@node1 /]# docker run -itd --name a2 --network net1 busybox:latest
cb77b215baff887714cd8a587b981d7e391c4237d95d45e97663d69bf958c2ce
[root@node1 /]# docker run -itd --name a3 --network net1 busybox:latest
125f031364a66c1568297fb8bbac890abcb8826de15cbf053471974603c965d6
#对于自定义网络的优点可以通过主机名进行ping

测试访问

[root@node1 /]# docker exec  -it a1 sh
/ # ping a2
PING a2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.065 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.170 ms
^C
--- a2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.065/0.117/0.170 ms
/ # ping a3
PING a3 (172.19.0.4): 56 data bytes
64 bytes from 172.19.0.4: seq=0 ttl=64 time=0.063 ms
64 bytes from 172.19.0.4: seq=1 ttl=64 time=0.058 ms
^C
--- a3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.058/0.060/0.063 ms

2、我们来自定义bridge网络,且自定义网段与网关

自定义bridge网络

[root@node1 /]# docker network create -d bridge --subnet 172.20.16.0/24 --gateway 172.20.16.254 net2
c517433db7e3230c7faea88cf485e320a10d1a66b8f31e3cd9f2c3e84d4208a4

创建基于bridge网络的容器,指定IP为172.20.16.10、172.20.16.20

[root@node1 /]# docker run -itd --name a4 --network net2 --ip 172.20.16.10 busybox:latest
415193c1a428782b6689881b58e66565e38ec3e699484032ef754c92efd00609
[root@node1 /]# docker run -itd --name a5 --network net2 --ip 172.20.16.20 busybox:latest
6b304a044d60de792188e6bbc2fd414b8c98919413a7bc19a6b58ee7a4b89a9a

测试访问

[root@node1 /]# docker exec  -it a4 sh
/ # ping a5
PING a5 (172.20.16.20): 56 data bytes
64 bytes from 172.20.16.20: seq=0 ttl=64 time=0.079 ms
^C
--- a5 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.079/0.079/0.079 ms

docker的网络-单主机(三种原生网络)none、host、bridge的更多相关文章

  1. 网络-Docker 提供的几种原生网络和自定义网络(11)

    Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,本章重点讨论前一种 Docker 安装时会自动在 host 上创建三个网络,我们可用 docker netwo ...

  2. [转]VMware Workstation网络连接的三种模式

    经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...

  3. 【转】Apache 配置虚拟主机三种方式

    Apache 配置虚拟主机三种方式  原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...

  4. 三种zigbee网络架构详解

    在万物互联的背景下,zigbee网络应用越加广泛,zigbee技术具有强大的组网能力,可以形成星型.树型和网状网,三种zigbee网络结构各有优势,可以根据实际项目需要来选择合适的zigbee网络结构 ...

  5. Docker MySql 查看版本的三种方法

    目录 Docker MySql 查看版本的三种方法 1.mysql -V命令查看版本 2.status命令查看版本 3.version命令查看版本 Docker MySql 查看版本的三种方法 1.m ...

  6. docker容器网络—单主机容器网络

    当我们在单台物理机或虚拟机中运行多个docker容器应用时,这些容器之间是如何进行通信的呢,或者外界是如何访问这些容器的? 这里就涉及了单机容器网络相关的知识.docker 安装后默认 情况下会在宿主 ...

  7. (转) linux虚拟机中和主机三种网络连接方式的区别

    在介绍网络模式之前,关于网络的几个简单命令的使用 ifup eth0   //启动网卡eth0 ifdown eth0 //关闭网卡eth0 /etc/network/interfaces  //网络 ...

  8. VMware网络设置的三种方式

    VMWare提供了三种工作模式:host-only(主机模式).NAT(网络地址转换模式).bridged(桥接模式) 1.host-only(主机模式) 在某些特殊的网络调试环境中,如何要求将真实环 ...

  9. 使用JS对form的内容验证失败后阻止提交 &&js校验表单后提交表单的三种方法总结

    1.form的两个事件 submit,提交表单,如果直接调用该函数,则直接提交表单 onSubmit,提交按钮点击时先触发,然后触发submit事件.如果不加控制的话,默认返回true,因此表单总能提 ...

随机推荐

  1. centos7 开放指定端口

    centos7 开放指定端口 #开放8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent #重载防火墙 firewall- ...

  2. 相对论中的光速c不变,这么讲!你总能理解了吧!

    今天谈谈相对论的假设基础--光速不变,很多人都知道爱因斯坦的相对论,也知道相对论的理论基础是光速不变,即无论参考哪个参照系,光的速度都是不变的,这个很难得理解的问题.我之前看过别人的理解,也自己思考怎 ...

  3. Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能

    我做Java方面的面试官也有些年头了,从校招学生到初级开发到架构师我都面试过.从技术上来讲,候选人通过面试的标准可能千差万别,但归结成一句话,就是候选人达到了职位介绍的要求,且相关项目经验达到足量的年 ...

  4. 自动化接口差异测试-diffy 回归测试 charles rewrite 请求

    https://mp.weixin.qq.com/s/vIxbtQtRRqgYCrDy7XTcrA 自动化接口差异测试-diffy Boris 搜狗测试 2018-08-30   自动化接口差异测试- ...

  5. celery 动态配置定时任务

    How to dynamically add or remove tasks to celerybeat? · Issue #3493 · celery/celery https://github.c ...

  6. 线上一次大量 CLOSE_WAIT 复盘

    https://mp.weixin.qq.com/s/PfM3hEsDa3CMLbbKqis-og 线上一次大量 CLOSE_WAIT 复盘 原创 ms2008 poslua 2019-07-05 最 ...

  7. spring boot 启动 开启注解 加载 bean

    业务描述:创建一个cache类然后交给spring 管理. @Component @Scope("singleton") public class Cache { public C ...

  8. 题解 P1248 【加工生产调度】

    题目 某工厂收到了 n 个产品的订单,这 n 个产品分别在 A.B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工. 某个产品 i 在 A.B 两车间加工的时间分别为 Ai,Bi 怎 ...

  9. LOJ10013曲线

    题目描述 明明做作业的时候遇到了n  个二次函数s_i(x)=ax^2+bx+c ,他突发奇想设计了一个新的函数 f(x)=max{s_i(x)},i=1,2,...,n. 明明现在想求这个函数在 [ ...

  10. php中一种单引号逃逸造成的注入

    demo如下: $post = $_POST; $sql=''; $array['name'] = $post['name']; $array['age'] = 18; $array['addr'] ...