在 LXD 上安装 Alpine

来自 Alpine Linux

LXD

LXD 是一个易于使用的守护进程和客户端,用于管理 LXC 容器。Ubuntu 16.04 及更高版本默认包含它。它可能在其他发行版(如 Debian)中也可用。如果您完全不熟悉 LXC 或 LXD,请直接从 LXD 开始。有关如何使用它的详细说明,请参阅 https://linuxcontainers.cn/lxd/introduction/

使用 LXD,您可以在几秒钟内在几乎任何 Ubuntu 16.04(或更高版本)系统上启动 Alpine Linux 容器,包括

  • 独立系统
  • Amazon EC2 实例
  • OpenStack KVM VPS

使用 LXD,您可以轻松地在所有这些环境中,在 Ubuntu 主机之上运行 Alpine。

这些说明假设您在 amd64 (x86_64) 平台上运行。

LXD 安装

在 Ubuntu 18.04 上,LXD 有两个可用版本

  • 来自 apt 软件包,新安装时默认包含
  • 来自 snap。snap 版本的 LXD 比 apt 版本具有更高的版本和更多功能。未来版本的 LXD 将仅通过 snap 分发。

如果您想使用最新的 LXD,请删除 apt 版本并安装 snap 版本

sudo apt-get remove lxd lxd-client sudo snap install lxd

将您自己添加到 lxd 组,以便您可以在不成为 root 用户的情况下运行 lxc

sudo adduser `whoami` lxd

然后注销并重新登录。

LXD 配置

在启动 LXD 容器之前,您必须配置 LXD

sudo lxd init

接受所有默认设置。如果您没有容器,则可以重新运行此命令。建议使用 ZFS 存储方法,因为它能够创建容器的即时快照和副本,但这需要额外的配置,并且并非在所有地方都可用(例如,在 VPS 主机中)。对于演示,dir 就可以了。

容器创建

要安装 Alpine Linux 3.8,请运行

lxc launch images:alpine/3.8 a1

要安装 Alpine Linux edge 版本,请运行

lxc launch images:alpine/edge a2

要进入容器中的 shell,请运行

lxc exec a1 ash

网络配置

容器具有对网络的出站访问权限,但没有入站公共访问权限,因为它没有公共 IP。您可以使用多种网络技术提供入站访问

  • 在 LAN 上,只需通过主机 LXD 节点添加路由即可
  • 使用 iptables 配置器,例如 shorewall
  • 对于 HTTP/HTTPS 访问,请使用 HTTP 反向代理/负载均衡器(如 haproxy 或 pound)将 HTTP 请求重定向到各种容器。您可以在 Alpine 容器中运行 HTTP 反向代理,一旦您将所需的端口重定向到它(使用 iptables)。