上云——docker基础篇 docker网络
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网络相关推荐
- 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...
- 尚硅谷docker基础篇 2018版
typora-root-url: ./image Docker基础篇之快速上手 第一章 Docker简介 是什么? 问题:为什么会有 docker 的出现 一款产品从开发到上线,从操作系统,到运行环境 ...
- Docker基础篇之快速上手
下载md查看 链接:https://pan.baidu.com/s/1ocFFFlOvGZdXBDgJovZ8tA 提取码:atm3 Docker基础篇之快速上手 第一章 Docker简介 是什么? ...
- 《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 ...
- uniCloud 云函数操作云数据库-基础篇
uniCloud 云函数操作云数据库-基础篇 原文:uniCloud 云函数操作云数据库-基础篇 1. database() 获取数据库对象 const db = uniCloud.database( ...
- 云原生 | Docker:基础篇
目录 前言 1.1 Docker 入门 1.2 Docker 架构 1.3 Docker 仓库 1.4 Docker 安装 1.5 Docker 镜像加速器 1.6 Docker 镜像 1.7 Doc ...
- Docker基础篇 - (六)Docker 网络Spring Boot微服务打包Docker镜像
⑦ Docker 网络 7.1 理解Docker0 清空下前面的docker 镜像.容器 # 删除全部容器 [root@cVzhanshi tomcat-diy]# docker rm -f $(do ...
- Docker 基础篇
1 Docker特点 Build, Ship and Run(搭建.运输.运行) Build once,Run anywhere(一次搭建,到处运行) 解决了运行环境和配置问题的软件容器,方便做持续集 ...
- Docker基础------安装docker,以及一些常用的docker命令,docker网络,自定义docker网络
centos安装docker 1.卸载旧版的docker yum remove docker \docker-client \docker-client-latest \docker-common \ ...
最新文章
- SpringMVC(二八) 重定向
- PHP代码审计基础手册
- 【Node】模块加载过程
- SpringBoot 路径访问控制
- php 识别图片主色调,PHP 判断图片主色调的简单示例
- 深度剖析python_汉诺塔问题深度剖析(python实现)
- lucene bug的报告经历
- java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
- Vue-cli使用prerender-spa-plugin插件预渲染和配置cdn
- ENVI学习总结(四)——图像正射校正
- ArcGIS 各版本产品补丁荟萃
- [图形学] 延迟贴花渲染技术 (A Deffered Decal Rendering Technique)
- Faster RCNN超详细入门 02 网络细节与训练方法
- JAVA实验二:设计一个教师类Teacher(属于cn.net.sdkd包)实现接口进行排序等
- 步入J2EE架构和过程
- C语言求1000以内水仙花数
- 2017省市区最新编码(依据国家统计局最新数据生成)
- no-cache,max-age=0,nostore区别及304原理
- 计算机软考网络管理员满分,2016年计算机软考网络管理员必做试题
- Windows Live Writer插件