7 设置 Docker 开源引擎 #
7.1 准备主机 #
请按如下所述准备主机。在安装任何与 Docker 相关的软件包之前,需要启用 Containers Module
:
从 Docker Open Source Engine 1.12 开始,容器编制现在是 Docker 开源引擎不可或缺的组成部分。尽管此功能已在 SUSE Linux Enterprise Server 中提供,但 SUSE 并不提供对它的支持,此功能仅作为技术预览提供。使用 K8S 进行容器编制。有关细节,请参见 Kubernetes documentation。
7.1.1 安装和配置 Docker 开源引擎 #
安装
docker
软件包:> sudo zypper install docker
要在系统引导时自动启动 Docker 服务,请运行以下命令:
> sudo systemctl enable docker.service
这也会启用 docker.socket。
打开
/etc/sysconfig/docker
文件。搜索参数DOCKER_OPTS
并添加--insecure-registry ADDRESS_OF_YOUR_REGISTRY
。将 CA 证书添加到目录
/etc/docker/certs.d/REGISTRY_ADDRESS
:> sudo cp CA /etc/pki/trust/anchors/
将 CA 证书复制到系统中:
> sudo update-ca-certificates
启动 Docker 服务:
> sudo systemctl start docker.service
这也会启动 docker.socket。
Docker 守护程序将会侦听仅可供 root 用户以及 docker 组成员访问的本地套接字。docker 组是在安装软件包期间自动创建的。
要允许特定用户连接到本地 Docker 守护程序,请使用以下命令:
> sudo /usr/sbin/usermod -aG docker USERNAME
这会允许该用户与本地 Docker 守护程序通讯。
7.2 配置网络 #
要使容器能够访问外部网络,请启用 ipv4 ip_forward
规则。
7.2.1 Docker 开源引擎与 iptables 交互的方式 #
要了解有关容器如何相互交互以及如何与系统防火墙交互的详细信息,请参见 Docker documentation。
也可以阻止 Docker 开源引擎操作 iptables
。请参见 Docker documentation。
7.3 存储驱动程序 #
Docker 开源引擎支持不同的存储驱动程序:
vfs:如果 Docker 主机文件系统不支持写入时复制,将自动使用此驱动程序。此驱动程序比其他所列驱动程序更简单,未利用 Docker 开源引擎的某些优势,例如共享层。此驱动程序很可靠,但速度较慢。
devicemapper:此驱动程序依赖于 device-mapper 精简供应模块。它支持写入时复制,因此可以利用 Docker 开源引擎的所有优势。
btrfs:此驱动程序依赖于 Btrfs 来提供 Docker 开源引擎所需的所有功能。要使用此驱动程序,
/var/lib/docker
目录必须位于 Btrfs 文件系统上。
从 SUSE Linux Enterprise Server 12 开始,默认会使用 Btrfs 文件系统,这会强制 Docker 开源引擎使用 btrfs 驱动程序。
可以通过更改 /etc/sysconfig/docker
文件中定义的 DOCKER_OPTS 变量值来指定要使用的驱动程序。可以手动进行这种更改,也可以在 YaST 中浏览到系统 > /etc/sysconfig 编辑器 > 系统 > 管理 > DOCKER_OPTS 菜单,然后输入 -s storage_driver 字符串进行更改。
例如,要强制使用 devicemapper 驱动程序,请输入以下文本:
DOCKER_OPTS="-s devicemapper"
/var/lib/docker
建议在单独的分区或卷上挂载 /var/lib/docker
。这样,当文件系统损坏时,运行 Docker 开源引擎的操作系统将不受影响。
如果您为 /var/lib/docker
选择了 Btrfs 文件系统,强烈建议为其创建一个子卷。这可以确保从文件系统快照中排除该目录。如果不从快照中排除 /var/lib/docker
,当您开始部署容器后,文件系统可能很快就会耗尽磁盘空间。此外,回滚到以前的快照也会重置 Docker 数据库和映像。有关详细信息,请参见 https://documentation.suse.com/sles/html/SLES-all/cha-snapper.html#sec-snapper-setup-customizing-new-subvolume。
7.4 更新 #
对docker
软件包进行的所有更新都会标记为“交互式”(即,不是自动更新),以避免意外的更新破坏正在运行的容器工作负载。我们建议在对 Docker 开源引擎应用更新之前停止所有正在运行的容器。
为避免数据丢失,我们不建议让工作负载依赖于容器在 Docker 开源引擎更新后保持可启动状态。尽管从技术上讲可以通过 --live-restore
选项使容器能够在更新期间保持运行,但经验表明,这种更新可能会导致性能下降。SUSE 不支持此功能。