Docker笔记:Docker网络知识介绍

举报
IT技术分享社区 发表于 2022/10/25 08:26:10 2022/10/25
1.2k+ 0 0
【摘要】 当我们每启动一个容器,docker就给对应容器分配一个eth0,并能够桥接到docker0网卡。这个时候可以把docker0看作为路由器,每个容器可以看作为连接路由器的网络设备,docker0用来管理每个容器的和docker0通信的映射关系。

image_3e0b3a9c.png

今天给大家介绍docker的网络知识,欢迎大家互相交流学习!

1、docker网络介绍

当我们的服务器成功安装docker并启动进程后,就会产生一个docker0的虚拟网桥,本质为Linux网桥(默认为桥接模式),使用的通信技术是Veth-pair技术.

当我们每启动一个容器,docker就给对应容器分配一个eth0,并能够桥接到docker0网卡。这个时候可以把docker0看作为路由器,每个容器可以看作为连接路由器的网络设备,docker0用来管理每个容器的和docker0通信的映射关系。

image_8320d248.png

查看网络信息

ip addr

具体如下图

image_020f4f74.png

lo:表示本地回环地址

dockers0:表示docker容器安装自动产生的docker0地址。

2、测试容器和宿主主机的通信

2.1 宿主主机可以ping通 docker0

ping 172.17.0.1

执行效果如下图

image_6bf6d450.png

2.2 容器内部ping宿主主机也可以ping通

ping 192.168.0.116

image_6e45968b.png

2.3 dockers中nginx解决没有ping命令的问题

大家如果安装的nginx没有ping命令的话,可以采用下面的两条命令安装ping。

apt-get update #获取更新软件源

image_b8f166bd.png

apt install iputils-ping #安装ping命令

image_7c48066d.png

2.4 容器之间也可以互相ping通

-- 获取docker所有容器的IP地址
docker inspect -f '{
        {.Name}} - {
        {.NetworkSettings.IPAddress }}' $(docker ps -aq)

image_a8c709ed.png

nginxtest 容器内IP是 172.17.05

nginxtest02 容器内IP是 172.17.06

测试一下是否能够ping通

nginxtest ping nginxtest02

docker exec -it nginxtest /bin/bash
ping 172.17.0.6

image_5ba7725a.png

nginxtest02 ping nginxtest

docker exec -it nginxtest02 /bin/bash
ping 172.17.0.5

image_26dcf0d6.png

3、evth-pair技术简介

evth-pair就是一对虚拟设备接口,它们都是成对出现的,一端连着协议,一端彼此相连,所以可以通信。evth-pair可以充当一个桥梁。

4、Docker网络总结

Docker 使用的是Liunx的桥接原理,宿主机中是一个Docker容器的网桥 docker0。Docker 中所有的网络接口的是虚拟的,虚拟的转发效率高,

docker容器网桥的生成周期:docker容器删除,对应的一对网桥就没了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。