理解 Docker 网络(一) -- Docker 对 宿主机网络环境的影响

简介

通过 Docker 容器可以实现文件系统, 网络和内核的隔离。 Docker 网络是使用 Docker 的一个很重要的知识点。 在不了解 Docker 网络的情况下使用 Docker 部署应用可能会出现 Docker 容器跨过宿主机防火墙(iptables)的限制直接与取得外网访问权的情况。 在这篇文章中将会分析安装 Docker 对宿主机网络设备和 iptables 两个重要的网络环境的影响。 并会分析何为 Docker 容器网络的隔离性, 如何通过控制宿主机 iptables 来控制 Docker 容器的网络访问权限。

跨越宿主机防火墙示例

首先在宿主机上设置一个防火墙, 将 INPUT 链的默认策略设为 DROP

$ iptables -P INPUT DROP

然后执行查看 iptables 的命令

$ iptables-save

可以看到 filter 表的 INPUT 链的默认策略为 DROP
在这里插入图片描述
然后 ping 百度, 由于 INPUT 链的默认规则为 DROP , 导致 DNS 服务器返回的解析结果不能正确接受, 所以这里直接 ping 解析出的 ip 地址。

$ ping -c4 14.215.177.39

执行结果为

在这里插入图片描述

可以看到宿主机在不使用 iptables 手动设置 INPUT 链的情况下已经和外界网络隔绝了。

接着创建一个 Docker 容器并执行 ping -c4 www.baidu.com 的命令

$ docker run --rm debian:stretch-slim bash -c "\
echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list\
&& apt-get update > /dev/null\
&& apt-get install -y  inetutils-ping >/dev/null 2>&1\
&& ping -c4 www.baidu.com"

在这里插入图片描述
可以看到能够正确接收 DNS 服务器返回的解析结果, 并且能够成功 ping 通。

这就是所谓的 Docker 容器网络环境和宿主机网络环境互相隔离。 接下来就会详解 Docker 是如何操作宿主机的网络设备来实现 Docker 容器和宿主机网络隔离的。

安装 Docker 对宿主机网络环境的影响

在这里需要准备一个全新安装的虚拟机(这里使用的是 debian9 gnome), 然后对比安装前后宿主机网络环境的变化。

安装前网络环境

首先查看安装 Docker 前的网络设备, 输入查看网络设备的命令

$ ip a

在这里插入图片描述

只有两个网络设备, 一个是主机的回环设备, 一个是主机的外接网卡。

接着查看安装 Docker 前的 iptables, 输入查看 iptables 的命令

$ iptables-save

然后输出的内容可能为空, 也可能是下面的内容

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若即

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值