禁用容器网络
如果你想完全禁用容器上的协议栈,你可以在启动容器时使用 --network none
标志。在容器内,只有回环设备被创建。下面的例子说明了这一点。
-
创建容器
$ docker run --rm -dit \ --network none \ --name no-net-alpine \ alpine:latest \ ash
-
通过在容器内执行一些常见的网络命令来检查容器的协议栈。注意,容器没有创建
eth0
。$ docker exec no-net-alpine ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1 link/ipip 0.0.0.0 brd 0.0.0.0 3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1 link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
$ docker exec no-net-alpine ip route
第二个命令返回空,因为容器中没有路由表。
-
停止容器。容器在创建时用了
--rm
标志,因此会被自动销毁。$ docker stop no-net-alpine
下一步
- 通关 host 网络教程
- 学习 容器角度中的网络
- 学习 bridge 网络
- 学习 overlay 网络
- 学习 Macvlan 网络