docker 支持的四种网络

发布于:2025-06-19 ⋅ 阅读:(17) ⋅ 点赞:(0)

文章目录

    • 一、bridge模式
    • 二、host模式
    • 三、macvlan模式
    • 四、 ipvlan 模式

docker 支持四种网络: bridgehostipvlanmacvlan

一、bridge模式

我们平时默认使用的是 bridge,即网桥模式(不加额外参数使用的就是bridge模式)。相当于我们使用的小路由的NAT模式,容器的IP处于“172.17.0.0/16”的子网中,外部IP无法直接和容器通讯。
在这里插入图片描述

二、host模式

host 模式直接使用宿主机的网卡,共用IPMAC

$ docker run --privileged  \
--network host \
-d -it ubuntu:latest \
/bin/bash

当使用 host 模式,容器内可以看到本机网卡信息:
在这里插入图片描述
hostbridgedocker 默认带的两种网络,macvlanipvlan 需要单独创建。

三、macvlan模式

macvlan 使用单独的 mac 和 单独的 IPipvlan 使用相同的 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 包中,pingiputils-ping 包nslookupbind9-utils 包showmountnfs_common 中。

把该装的软件都装好,然后导出作为基础镜像,以后需要快速搭环境时可以当成裁剪的虚拟机使用。

容器导出命令为:

$ docker export -o ubuntu_net.tar 98bcd091633d

使用时可以将tar包导入,当需要创建容器时,调用导入的模板就能正常使用了。

$ docker import ubuntu_net.tar ubuntu:net

全文完。


网站公告

今日签到

点亮在社区的每一天
去签到