docker网络

每启动一个docker容器,docker都会给容器分配一个ip,只要安装了docker,默认就会有一个docker0的网卡(桥接模式),使用的技术是evth-pair技术,我们直接在主机输入ip addr,就可以发现veth开头的网卡

# 如果你发现docker容器无法查看ip
[root@lv94 docker]# docker exec -it tomcat04 ip addr
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ip": executable file not found in $PATH: unknown
# 进入容器输入如下命令,即可解决上述问题
apt update && apt install -y iproute2# 如果你发现docker容器没有ping命令,进入容器输入如下命令
apt-get update
apt install net-tools
apt install iputils-ping# 主机输入ip addr ,可发现如下类似网卡
212: veth424583e@if211: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether 1a:7b:18:ea:a6:ba brd ff:ff:ff:ff:ff:ff link-netnsid 0

evth-pair是一对虚拟设备的接口,一段连着协议,一端彼此相连,可以设想虚拟机有这个接口,docker容器也有这个接口,两者通过接口相连,所以可通

# 如何证明上述思想
# 这是docker容器内的网关
[root@lv94 docker]# docker exec -it tomcat04 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
211: eth0@if212: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever
```shell
# 这是主机网关(不全仅取代表)
212: veth424583e@if211: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether 1a:7b:18:ea:a6:ba brd ff:ff:ff:ff:ff:ff link-netnsid 0

我们发现211:212,对应212:211,这不就是成对出现的嘛?,而且是递增的,下一个容器一定是213:214

docker0其实相当于路由器的角色地位

link

如果直接用容器名去ping其他容器名是没法ping通的,但是如果在开始运行容器的时候加上–link就可以ping通,但是反向如何没加–link是无法通的

# 如下,tomcat06可以ping通tomcat07
docker run -d -P --name tomcat06 --link tomcat07 tomcat# 实则就是直接绑定hosts
[root@lv94 docker]# docker run -d -P --name tomcat07 --link tomcat06 tomcat
d577a2d9456f764a3b78b58cc3069cfa6ae8de856bb8f7e982e123253166e687
[root@lv94 docker]# docker exec -it tomcat07 /bin/bash
root@d577a2d9456f:/usr/local/tomcat# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      tomcat06 7080378f73ce
172.17.0.3      d577a2d9456f

自定义网络

[root@lv94 docker]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
94536c9ebaf3   bridge    bridge    local
76290327ac46   host      host      local
32f10c8673ed   none      null      local# 网络的模式
bridge 桥接模式
none 不匹配网络
host 和宿主机共享网络
container 容器网络互通[root@lv94 docker]# docker network --help
Usage:  docker network COMMAND
Manage networks
Commands:connect     Connect a container to a networkcreate      Create a networkdisconnect  Disconnect a container from a networkinspect     Display detailed information on one or more networksls          List networksprune       Remove all unused networksrm          Remove one or more networks
Run 'docker network COMMAND --help' for more information on a command.# 自定义
[root@lv94 docker]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 xiaonet
11f7c60b0b7e32cdbb12418ecab1a5a27c475cd398f1fcd9fe41556a0f4e33cb
[root@lv94 docker]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
94536c9ebaf3   bridge    bridge    local
76290327ac46   host      host      local
32f10c8673ed   none      null      local
11f7c60b0b7e   xiaonet   bridge    local
# 万能inspect查看详情
[root@lv94 docker]# docker network inspect xiaonet# 利用自定义容器
[root@lv94 docker]# docker run -d -P --name tomcat08 --net xiaonet tomcat# 再次查看,发现详细信息已有该容器,并且已分配好ip
[root@lv94 docker]# docker network inspect xiaonet# 自定义网络在同一网段是可以ping通的不需要link
这一点的好处在于不同的集群之间使用不同的网络,保证集群内部的安全和健康

很明显,不同的网段是无法ping通的,就比如docker0和上述的xiaonet网段

# 可以使用connect进行容器和网段的连通
[root@lv94 docker]# docker network connect xiaonet tomcat09
[root@lv94 docker]# docker network inspect xiaonet
..."Containers": {"63731f043b4a6605c1035d4212e5c4a6663a023897d231caaac80249bd66ec50": {"Name": "tomcat09","EndpointID": "e1ce0c069ce0b3fb4f22c470fde37bb1b07e3a2f2cbc197257388a4f2a68961b","MacAddress": "02:42:c0:a8:00:03","IPv4Address": "192.168.0.3/16","IPv6Address": ""},"fa90663b8153ecd20a336e7776cbfe812e19cd4867fe9051846391b3ef3baca2": {"Name": "tomcat_xiaonet","EndpointID": "49792557f1ddadb3030760d260167faa5a37d7ccbee66ba4e101e3bff76a823d","MacAddress": "02:42:c0:a8:00:02","IPv4Address": "192.168.0.2/16","IPv6Address": ""}}...# 就可以发现xiaonet中多了一个ip就是tomcat09
# 取消连接的命令
[root@lv94 docker]# docker network disconnect xiaonet tomcat09
[root@lv94 docker]# docker network inspect xiaonet
..."Containers": {"fa90663b8153ecd20a336e7776cbfe812e19cd4867fe9051846391b3ef3baca2": {"Name": "tomcat_xiaonet","EndpointID": "49792557f1ddadb3030760d260167faa5a37d7ccbee66ba4e101e3bff76a823d","MacAddress": "02:42:c0:a8:00:02","IPv4Address": "192.168.0.2/16","IPv6Address": ""}}...# 连接到网段后发现是可以ping通的
[root@lv94 docker]# docker exec -it tomcat09 ping tomcat_xiaonet
ping: tomcat_xiaonet: Name or service not known
[root@lv94 docker]# docker network connect xiaonet tomcat09
[root@lv94 docker]# docker exec -it tomcat09 ping tomcat_xiaonet
PING tomcat_xiaonet (192.168.0.2) 56(84) bytes of data.
64 bytes from tomcat_xiaonet.xiaonet (192.168.0.2): icmp_seq=1 ttl=64 time=0.135 ms
64 bytes from tomcat_xiaonet.xiaonet (192.168.0.2): icmp_seq=2 ttl=64 time=0.050# 其实我们查看tomcat09不难发现,是有两个ip的"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "273a873b979b4d4431304ce4156347135cb4c9e956fc7926278e6140fcb5feeb","EndpointID": "53bc310e41528db31584749b77818170a49adc80eb2d7465b18483854db26bdd","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:03","DriverOpts": null},"xiaonet": {"IPAMConfig": {},"Links": null,"Aliases": ["63731f043b4a"],"NetworkID": "11f7c60b0b7e32cdbb12418ecab1a5a27c475cd398f1fcd9fe41556a0f4e33cb","EndpointID": "d58c06aa0cc35a4d1c19f809ac3d148e1187be95d45f35735c8de780bfd1eb88","Gateway": "192.168.0.1","IPAddress": "192.168.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:c0:a8:00:03","DriverOpts": {}}}

上云——docker基础篇 docker网络相关推荐

  1. 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)

      前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...

  2. 尚硅谷docker基础篇 2018版

    typora-root-url: ./image Docker基础篇之快速上手 第一章 Docker简介 是什么? 问题:为什么会有 docker 的出现 一款产品从开发到上线,从操作系统,到运行环境 ...

  3. Docker基础篇之快速上手

    下载md查看 链接:https://pan.baidu.com/s/1ocFFFlOvGZdXBDgJovZ8tA 提取码:atm3 Docker基础篇之快速上手 第一章 Docker简介 是什么? ...

  4. 《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis

    文章目录 8.Docker常规安装简介 8.1 docker常规安装总体步骤 8.2安装tomcat 8.3 安装mysql 8.3.1 docker hub上面查找mysql镜像 8.3.2 从do ...

  5. uniCloud 云函数操作云数据库-基础篇

    uniCloud 云函数操作云数据库-基础篇 原文:uniCloud 云函数操作云数据库-基础篇 1. database() 获取数据库对象 const db = uniCloud.database( ...

  6. 云原生 | Docker:基础篇

    目录 前言 1.1 Docker 入门 1.2 Docker 架构 1.3 Docker 仓库 1.4 Docker 安装 1.5 Docker 镜像加速器 1.6 Docker 镜像 1.7 Doc ...

  7. Docker基础篇 - (六)Docker 网络Spring Boot微服务打包Docker镜像

    ⑦ Docker 网络 7.1 理解Docker0 清空下前面的docker 镜像.容器 # 删除全部容器 [root@cVzhanshi tomcat-diy]# docker rm -f $(do ...

  8. Docker 基础篇

    1 Docker特点 Build, Ship and Run(搭建.运输.运行) Build once,Run anywhere(一次搭建,到处运行) 解决了运行环境和配置问题的软件容器,方便做持续集 ...

  9. Docker基础------安装docker,以及一些常用的docker命令,docker网络,自定义docker网络

    centos安装docker 1.卸载旧版的docker yum remove docker \docker-client \docker-client-latest \docker-common \ ...

最新文章

  1. SpringMVC(二八) 重定向
  2. PHP代码审计基础手册
  3. 【Node】模块加载过程
  4. SpringBoot 路径访问控制
  5. php 识别图片主色调,PHP 判断图片主色调的简单示例
  6. 深度剖析python_汉诺塔问题深度剖析(python实现)
  7. lucene bug的报告经历
  8. java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
  9. Vue-cli使用prerender-spa-plugin插件预渲染和配置cdn
  10. ENVI学习总结(四)——图像正射校正
  11. ArcGIS 各版本产品补丁荟萃
  12. [图形学] 延迟贴花渲染技术 (A Deffered Decal Rendering Technique)
  13. Faster RCNN超详细入门 02 网络细节与训练方法
  14. JAVA实验二:设计一个教师类Teacher(属于cn.net.sdkd包)实现接口进行排序等
  15. 步入J2EE架构和过程
  16. C语言求1000以内水仙花数
  17. 2017省市区最新编码(依据国家统计局最新数据生成)
  18. no-cache,max-age=0,nostore区别及304原理
  19. 计算机软考网络管理员满分,2016年计算机软考网络管理员必做试题
  20. Windows Live Writer插件

热门文章

  1. Wu反走样算法绘制圆(C++/MFC实现)
  2. python实战——XML转Json
  3. Influx-stress原理(初学)
  4. curl与tcpdump命令
  5. 软件测试简历个人技能是什么意思,系统测试岗位个人简历个人技能范文
  6. 三菱FX3U与东元Teco变频器N310通讯实战程序
  7. win10打开文件夹速度慢怎么办
  8. 【UE4】修改大气层半径
  9. sketch如何做设计稿交互_设计师用Sketch做设计稿时是用1倍图还是用2倍图做
  10. 2019年图灵新书年度销量TOP20