文章目录
-
- 一、bridge模式
- 二、host模式
- 三、macvlan模式
- 四、 ipvlan 模式
docker
支持四种网络: bridge
、 host
、 ipvlan
、 macvlan
一、bridge模式
我们平时默认使用的是 bridge
,即网桥模式(不加额外参数使用的就是bridge模式
)。相当于我们使用的小路由的NAT模式
,容器的IP
处于“172.17.0.0/16
”的子网中,外部IP
无法直接和容器通讯。
二、host模式
host
模式直接使用宿主机的网卡,共用IP
和MAC
。
$ docker run --privileged \
--network host \
-d -it ubuntu:latest \
/bin/bash
当使用 host 模式
,容器内可以看到本机网卡信息:
host
和 bridge
是 docker
默认带的两种网络,macvlan
和 ipvlan
需要单独创建。
三、macvlan模式
macvlan
使用单独的 mac
和 单独的 IP
;ipvlan
使用相同的 mac
和不同的 IP
。两种模式比较相似,一个使用不同的 mac
,另一个使用相同的 mac
。
docker macvlan 实例
命令示例:
$ docker network create -d macvlan \
--subnet=10.1.1.0/24 \
--gateway=10.1.1.254 \
-o parent=eth0 mymacvlan
$ docker run --name adguard \
--ip=10.1.1.1 \
--network mymacvlan \
-d adguard/adguardhome
四、 ipvlan 模式
下面演示 ipvlan 模式
,首先创建 ipvlan
网络:
$ docker network create \
--driver=ipvlan \
--subnet=10.20.0.0/16 \
--gateway=10.20.0.1 \
-o parent=enp1s0 \
my_ipvlan_network
创建完后,查看 docker
网络状态:
然后创建容器,引用 ipvlan 网络
:
$ docker run --privileged \
--ip 10.20.0.2 \
--network my_ipvlan_network \
-d -it ubuntu:latest \
/bin/bash
在容器中检查网络:
通过 ping
命令测试新分配的IP
,同时在容器中通过 tcpdump
监听 icmp ping 包
,从而判断当前网络是否是通的。
默认的 ubuntu:latest 镜像
,工具安装的不全。可以制作一个基础镜像,把需要的工具补全。这样就拥有了一个全新的运行环境,随时可以开一个新副本。
基础包汇总如下:
apt-get install screen
apt-get install vim
apt-get install python3
apt-get install pip
apt-get install net-tools
apt-get install iptables
apt-get install isc-dhcp-client
apt-get install iputils-ping
apt-get install bind9-utils
apt-get install git
apt-get install nfs-common
其中 ifconfig
工具在 net-tools 包
中,ping
在 iputils-ping 包
,nslookup
在 bind9-utils 包
,showmount
在 nfs_common
中。
把该装的软件都装好,然后导出作为基础镜像,以后需要快速搭环境时可以当成裁剪的虚拟机使用。
容器导出命令为:
$ docker export -o ubuntu_net.tar 98bcd091633d
使用时可以将tar
包导入,当需要创建容器时,调用导入的模板就能正常使用了。
$ docker import ubuntu_net.tar ubuntu:net
全文完。