文章目录

  • 一.网络类型介绍
    • 1.查看支持网络类型
    • 2.测试使用种类网络类型
    • 3.网络类型设置
      • 3.1 bridge
      • 3.2 host
      • 3.3 none
      • 3.4创建自定义网络
    • 4.Docker跨主机网络介绍
      • 4.1 Docker跨主机访问-macvlan实现
      • 4.2.Docker 跨主机访问–overlay实现

一.网络类型介绍

1.查看支持网络类型

docker network ls

2.测试使用种类网络类型

bridge  默认类型 NAT模式
host    host类型,使用宿主机网络,网络性能最高
container 容器类型。使用其他容器共用网络,k8s中使用
none    没有网络,上不了外网

3.网络类型设置

3.1 bridge

bridge:
[root@docker ~]# docker run -it --name="c-bri1" --network=bridge centos:6.9 /bin/bash
[root@a7a6b9e891cf /]# ifconfig -a
172.17.0.2
[root@a7a6b9e891cf /]# yum install -y iproute*[root@docker ~]# docker run -it --name="c-bri2" --network=bridge centos:7 /bin/bash
[root@d0e3b71b1f42 /]# ifconfig -a
172.17.0.3
在172.17.0.2的机子:
[root@a7a6b9e891cf /]# ping 172.17.0.3   能通
在10.0.0.11的机子:
[root@docker ~]# ping 172.17.0.2         能通

3.2 host

host:
[root@docker ~]# docker run -it --name="net_host" --network=host centos:6.9 /bin/bash
[root@docker /]#

3.3 none

none:
[root@docker ~]# docker run -it --name="net_none" --network=none centos:6.9 /bin/bash
[root@c199fb50b1ed /]# ifconfig

3.4创建自定义网络

docker network create -d bridge --subnet 172.30.0.0/16 --gateway 172.30.0.1 oldqiang

验证:

[root@docker01 ~]# docker run -it --name web01 --network oldqiang alpine:latest
WARNING: IPv4 forwarding is disabled. Networking will not work.
/ #
/ # ping web01
PING web01 (172.30.0.2): 56 data bytes
64 bytes from 172.30.0.2: seq=0 ttl=64 time=0.041 ms
64 bytes from 172.30.0.2: seq=1 ttl=64 time=0.061 ms
^C
--- web01 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.041/0.051/0.061 ms
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
1577: eth0@if1578: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:1e:00:02 brd ff:ff:ff:ff:ff:ffinet 172.30.0.2/16 brd 172.30.255.255 scope global eth0valid_lft forever preferred_lft forever

4.Docker跨主机网络介绍

4.1 Docker跨主机访问-macvlan实现

优点:能够跨docker主机访问
缺点:不能访问外网(容器不能与自己的宿主机进行通讯)
macvlan类似与虚拟机的桥接网络,只适合小规模

docker run -it --network macvlan_1 --ip 10.0.0.105 alpine:latest
如果不指定IP地址会自动分配随机ip地址,可能会造成ip地址冲突
没有ip地址的检测机制

在docker01上:
[root@docker01 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
161619b1812c558a2a9a2b399e3a4e9974002b01c327a34266ca8b92aedb0d9f
[root@docker01 ~]#
[root@docker01 ~]#
[root@docker01 ~]#
[root@docker01 ~]# docker network  ls
NETWORK ID     NAME                    DRIVER    SCOPE
fb01f1ab30f9   bridge                  bridge    local
38e40b72226d   dockercompose_default   bridge    local
3b61c49c8029   harbor_harbor           bridge    local
786ac363ee56   host                    host      local
161619b1812c   macvlan_1               macvlan   local[root@docker01 ~]# docker run -it --network macvlan_1 --ip 10.0.0.105 alpine:latest
WARNING: IPv4 forwarding is disabled. Networking will not work.
/ #
/ # ping 10.0.0.105
PING 10.0.0.105 (10.0.0.105): 56 data bytes
64 bytes from 10.0.0.105: seq=0 ttl=64 time=0.056 ms
64 bytes from 10.0.0.105: seq=1 ttl=64 time=0.061 ms
64 bytes from 10.0.0.105: seq=2 ttl=64 time=0.078 ms
/ # ping 10.0.0.106 (不通)当在docker02上启用ip为10.0.0.106的容器时,ping 10.0.0.106可以ping通
/ # ping 10.0.0.106
PING 10.0.0.106 (10.0.0.106): 56 data bytes
64 bytes from 10.0.0.106: seq=124 ttl=64 time=2004.238 ms
64 bytes from 10.0.0.106: seq=125 ttl=64 time=1003.551 ms
64 bytes from 10.0.0.106: seq=126 ttl=64 time=2.752 ms
64 bytes from 10.0.0.106: seq=127 ttl=64 time=0.282 ms
64 bytes from 10.0.0.106: seq=128 ttl=64 time=0.252 msdocker02:
[root@docker02 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
f7886005be327e90c128667752860488dadde35e5c9985952a305eea336a8063
[root@docker02 ~]# docker run -it --network macvlan_1 --ip 10.0.0.106 alpine:latest
/ #

4.2.Docker 跨主机访问–overlay实现

vlan与vxlan理解参考

(1)启动consul服务(consul存储ip地址的分配),实现网络的统一配置管理
在docker03:
[root@docker03 ~]# rz
[root@docker03 ~]# ls
anaconda-ks.cfg             docker_progrium_consul.tar.gz
[root@docker03 ~]# docker load -i docker_progrium_consul.tar.gz
[root@docker ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
[root@docker ~]# docker images
progrium/consul                  latest              09ea64205e55        5 years ago         69.4MBconsul: kv类型的存储数据库 (key:value)在docker01、02:
vim  /etc/docker/daemon.json(添加)
[root@docker01 ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["10.0.0.12:5000"],"cluster-store": "consul://10.0.0.13:8500","cluster-advertise": "10.0.0.11:2376"
}​[root@docker02 ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],"cluster-store": "consul://10.0.0.13:8500","cluster-advertise": "10.0.0.12:2376"
}systemctl restart docker2)创建overlay网络
在docker01:
docker network create -d overlay --subnet 172.16.0.0/24 --gateway 172.16.0.254 ol1     #这个网段不能和宿主机上相同,并且随便在一台上执行这个命令即可
[root@docker ~]# docker network ls   #查看容器的网络,出现overlay
2577561b4788        ol1                 overlay             global
在docker02:
[root@docker2 ~]# docker network ls  #查看容器的网络,也出现overlay
2577561b4788        ol1                 overlay             global
[root@docker01 ~]# docker network ls
NETWORK ID     NAME                    DRIVER    SCOPE
fea45b23b1fc   ol1                     overlay   global(全局网络)在docker02:
[root@docker2 ~]# docker network ls  #查看容器的网络,也出现overlay
2577561b4788        ol1                 overlay             global3)2边启动容器测试
[root@docker01 ~]# docker run -it --name test01 --network ol1 alpine:latest
/ # ifconfig             #得到eth0地址172.16.0.1
/ # ping 172.16.0.2      #验证容器间的通讯
PING 172.16.0.2 (172.16.0.2): 56 data bytes
64 bytes from 172.16.0.2: seq=0 ttl=64 time=1.243 ms
64 bytes from 172.16.0.2: seq=1 ttl=64 time=2.640 ms
/ # ping www.baidu.com   #验证能够上外网
PING www.baidu.com (183.232.231.174): 56 data bytes
64 bytes from 183.232.231.174: seq=0 ttl=127 time=20.574 ms
64 bytes from 183.232.231.174: seq=1 ttl=127 time=57.120 ms[root@docker01 ~]# docker run -it --name test02 --network ol1 alpine:latest
/ # ifconfig           #得到eth0地址172.16.0.2
/ # ping 172.16.0.1    #验证容器间的通讯
PING 172.16.0.1 (172.16.0.1): 56 data bytes
64 bytes from 172.16.0.1: seq=0 ttl=64 time=0.892 ms
64 bytes from 172.16.0.1: seq=1 ttl=64 time=1.045 ms
/ # ping www.baidu.com #验证能够上外网
PING www.baidu.com (183.232.231.172): 56 data bytes
64 bytes from 183.232.231.172: seq=0 ttl=127 time=20.923 ms
64 bytes from 183.232.231.172: seq=1 ttl=127 time=27.849 ms每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网

docker容器4:docker网络类型+跨主机访问相关推荐

  1. 使用Docker的macvlan为容器提供桥接网络及跨主机通讯

    对于了解Docker容器网络的朋友,我想对虚拟机的网络也不会陌生,毕竟我们是跟随这个时代一起学习和进步的人.相比VM,Docker的网络也在逐步走向成熟,本文主要针对其中的macvlan做下简单的介绍 ...

  2. Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问

    前言 自定义网络 建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址.Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Over ...

  3. docker容器的跨主机访问

    在同一宿主机下的Docker的容器之间是默认互相联通的.通过docker inspect id或name可以查看到ip地址.在不同的容器中来执行ping是可以ping通的,然而跨容器则行不通,于是总结 ...

  4. Docker容器的虚拟化网络

    文章目录 1 虚拟化网络 2 单节点容器间通信 3 不同节点容器间通信 4 Docker容器网络 5 Docker的四种网络模式 5.1 host模式 5.2 container模式 5.3 none ...

  5. 如何从Docker容器内部连接到计算机的本地主机?

    本文翻译自:From inside of a Docker container, how do I connect to the localhost of the machine? So I have ...

  6. docker+consul+overly 实现docker的跨主机访问

    docker 的跨主机访问 集群中主机连接到键值存储,Docker支持 Consul.Etcd和Zookeeper 集群中主机运行一个Docker守护进程 集群中主机必须具有唯一的主机名,因为键值存储 ...

  7. Docker进阶(3)docker容器编排-docker compose、swarm、service

    Docker进阶(3)docker容器编排 Docker进阶(3)docker容器编排 1. 容器编排 2. docker compose 2.1 安装 2.2 官方文档创建一个简单的web应用 2. ...

  8. docker(7、容器网络6) weave 网络 Weave 跨主机的连通和隔离特性

    weave 是 Weaveworks 开发的容器网络解决方案.weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来.对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交 ...

  9. 8天入门docker系列 —— 第七天 让你的container实现跨主机访问

    当你有若干个容器之后,你可能就希望实现容器的跨机部署访问了,比如aspnetcore在一台host上,mysql在另外一个host上,如果要实现这样的功能,需要你 借助docker自带的overlay ...

最新文章

  1. 大厂首发:java转算法工程师
  2. PM Basic Skill---Communicate Plan
  3. 【通知】有三AI书籍和文化产品读者欢迎入群,送4本书!
  4. 客户端从config上获取配置
  5. TIGK监控平台介绍
  6. LinkedList 实现原理及源码解析(jdk8 底层⽤的是链表)
  7. 2017.9.13 序列统计 思考记录
  8. python删除第一行_python3.7 openpyxl 删除指定一列或者一行的代码
  9. 分层模式下的Lazy Load ——探索Domain Model系列(下)--转
  10. Macbook用Terminal启动Matlab
  11. 汇编语言期末不挂科必备复习知识点
  12. WebAssembly 实践:如何写代码
  13. 订单信息无法识别,建议联系卖家。 错误码:INVALID_PARAMETER
  14. 视频剪辑的工作前景是什么?
  15. 基于JAVA工作流流程编辑OA系统计算机毕业设计源码+数据库+lw文档+系统+部署
  16. qchart 坐标轴设置_QChart学习之QValueAxis坐标轴设置
  17. nodejs+express解决微信公众号token验证失败
  18. python中各种属性与方法深析
  19. 图标设计五条黄金法则
  20. Java实现在线考试系统(系统介绍)

热门文章

  1. 红外光波长对血氧饱和度的影响
  2. Tomcat核心原理学习总结(二)
  3. 失业日记 10月19日
  4. 为什么只看重结果_不要只看重结果 过程也是美丽的
  5. 互联网出海现在还是风口么?
  6. java解决异常_聊聊Java中的异常及处理
  7. Mysql数据库MMM实现高可用架构
  8. MindMapper中各类模板的运用方法
  9. 万恶的NPE如何避免,几种你必须知道的方案!!!
  10. Java 第9 章 : 数据表与简单Java类映射转换