Docker学习(21)——Docker0网络

(1)docker镜像清空

[root@192 ~]# docker rmi -f $(docker images -aq)

(2)查看docker地址---docker0

[root@192 ~]# ip addr
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:79:12:89:34 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
[root@192 ~]# 

(3)测试宿主机和容器是否可以ping通

[root@192 ~]# docker run -d -P --name tomcat01 tomcat
...
Status: Downloaded newer image for tomcat:latest
...
[root@192 ~]# docker exec -it tomcat01 ip addr
...
4: eth0@if5
...
[root@192 ~]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.083 ms   ------linux宿主机可以ping通容器内部
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.046 ms
...

注意:

最新版本的tomcat默认不安装net-tools,如果执行docker -run -it tomcat01 ip addr失败,需先安装net-tools和iproute2。具体操作如下所示:

[root@192 ~]# docker exec -it 626a674478e9 /bin/bash
root@626a674478e9:/usr/local/tomcat# apt-get update
...                       -------------------安装步骤省略
root@626a674478e9:/usr/local/tomcat# apt-get install net-tools
...                       -------------------安装步骤省略
root@626a674478e9:/usr/local/tomcat# apt-get install -y iproute2
...                       -------------------安装步骤省略

(4)测试容器间是否可以ping通

[root@192 ~]# docker run -d -P --name tomcat02 tomcat        --------创建并运行tomcat02
62785031e32527217b97966d03c113056b35572861f80f8707595504d954d22b
[root@192 ~]# ip addr
...
5: veth69305ef@if4:        --------tomcat01网卡
...
7: vethd75534b@if6:        --------tomcat02网卡
...
[root@192 ~]# docker exec -it tomcat02 ip addr
...
6: eth0@if7:
...
[root@192 ~]# docker exec -it tomcat01 ping 172.17.0.3        -------tomcat1可以ping通tomcat2
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.130 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.070 ms
...
[root@192 ~]# docker exec -it tomcat03 ping 172.17.0.2
Error: No such container: tomcat03
[root@192 ~]# docker exec -it tomcat02 ping 172.17.0.2        -------tomcat2可以ping通tomcat1
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.109 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.074 ms
...
[root@192 ~]# 

(5)Docker网络原理

  • 每启动一个docker容器,docker会给容器分配一个ip
  • 安装了docker,默认有一个网卡docker0,使用的是桥接模式,利用的技术是evth-pair技术
  • 所有容器在不指定网络的情况下,都是docker0路由的。docker给容器分配一个默认的ip

(6)原理图

(7)容器删除,对应虚拟网卡也会被删除

[root@192 ~]# docker rm -f 容器id

执行ip addr查看对应网卡已不存在。

(8)总结

  •  Docker使用的是linux的桥接;
  • 宿主机中有一个docker容器的网桥: Docker0;
  • Docker创建容器时会为容器创建一个虚拟网卡(转发效率高)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值