使用 Docker Ubuntu 镜像学习 Linux 系统网络

使用 Docker Ubuntu 镜像学习 Linux 系统网络

Docker 是一个应用程序容器而不是系统容器像 LXD 一样,是否可以使用 Linux 操作系统 Docker 映像(例如,用于 Ubuntu 或 Centos)来自学 Linux、操作系统级网络,通过创建一堆轻量级实例,然后尝试 NAT、桥接、路由、代理(各种类型)、防火墙(iptables)等......?

基本上,我不想使用像 VirtualBox 这样的重量级解决方案,因为我希望能够在各种设置中拥有多个 Linux 操作系统实例,因此我的实例越轻越好。

使用 LXD 时,我看到的一个问题是:除非我使用 ZFS 或 BTRFS 类型的文件系统,否则我将无法节省磁盘空间。

编辑:我的主机操作系统是 Ubuntu 20.04,而不是 Windows。

答案1

快速回答:是的。

就网络而言,Docker 容器和 LXC/LXD 容器都适合您的目的。

Linux 上的容器采用各种隔离技术实现,包括命名空间、seccomp、cgroup 等。这里的核心是网络命名空间(CLONE_NEWNET在 中clone(2)),它创建主机网络堆栈的精确副本,具有独立的网络接口、路由表和规则、防火墙(iptables 或 netfilter)等,适合实验网络设置。

唯一需要注意的是,容器通常无法访问对主机内核的“危险”操作,例如管理内核模块。因此,如果您正在试验 WireGuard 之类的东西,则必须在主机端安装模块。除此之外,我认为使用容器(无论是 Docker 还是 LXD)进行网络实验没有问题。


对于您配置和维护 ZFS / Btrfs 的担忧,我建议使用 LXD(从 Snapcraft 安装),它支持 ZFS。使用默认设置指南 ( lxd init),您将能够创建一个 ZFS 格式的“虚拟磁盘”,该虚拟磁盘支持所有高级功能,同时保持主机系统中单个文件一样简单。它应该驻留在/var/snap/lxd/common/lxd/disks。(我记不清太多细节了,因为我已经将主机设置迁移到 ZFS,所以我直接使用 ZFS)。

相关内容