如何在 Docker 中将 Btrfs 配置为存储引擎

Docker 是 Linux 容器的开放平台管理工具。
它为开发人员和系统管理员提供了一种方法来构建应用程序并将其打包到轻量级容器中。

Docker 使用 devicemapper 设备作为默认存储引擎。
要使用 Btrfs 作为存储引擎,请执行以下步骤。
请注意,Red Hat Enterprise Linux (RHEL) 从他们的 Docker 构建中删除了 Btrfs 存储驱动程序,包括 Extra Packages for Enterprise Linux (EPEL) 存储库和为 RHEL7 发布的版本。

使用 systemctl 命令停止 docker 服务。
使用 mkfs.btrfs 命令在块设备上创建 Btrfs 文件系统。
使用 blkid 命令确定 Btrfs 文件系统的 UUID。
对于本文中使用的示例,我假设我们已经配置了 btrfs 文件系统,并且将只关注 docker 配置以使用 btrfs 文件系统作为存储引擎。

  1. 创建/etc/systemd/system/var-lib-docker.mount文件如下所示:
[Unit]
Description = Docker Image Store
[Mount]
What = UUID=[UUID for the Btrfs file system] 
Where = /var/lib/docker
Type = btrfs
[Install]
WantedBy = multi-user.target
  1. 使用 systemctl 命令启用并启动 var-lib-docker.mount 目标。
# systemctl enable var-lib-docker.mount
# systemctl start var-lib-docker.mount
  1. 将SELinux模式设置为“Permissive”。
    SELinux 目前不支持 Btrfs 存储驱动程序。

如何禁用或者设置 SELinux 为许可模式

  1. 编辑 /etc/sysconfig/docker 文件并设置 OPTIONS 变量如下:
# vi /etc/sysconfig/docker
OPTIONS=-s btrfs
  1. 将 /usr/lib/systemd/system/docker.service 文件复制到 /etc/systemd/system/docker.service 。
# cp -p /usr/lib/systemd/system/docker.service /etc/systemd/system/docker.service
  1. 编辑 /etc/systemd/system/docker.service 并为 var-lib-docker.mount 目标添加 Requires 和 After 条目,如下所示:
# vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine 
Documentation=http://docs.docker.com 
Requires=var-lib-docker.mount 
After=network.target docker.socket 
Requires=docker.socket 
After=var-lib-docker.mount
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
$DOCKER_STORAGE_OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576
[Install]
WantedBy=multi-user.target
  1. 如果系统需要使用 Web 代理来访问 Docker Hub 注册表,请编辑 /etc/sysconfig/docker 文件并添加以下行。
    将 [proxy_URL:port] 替换为 Web 代理的相应 URL 和端口号。
# vi /etc/sysconfig/docker
HTTP_PROXY="[proxy_URL:port]"
HTTPS_PROXY="[proxy_URL:port]"
  1. 使用systemctl命令开启并启动docker服务。
# systemctl enable docker
# systemctl start docker
  1. docker info 命令现在显示 Btrfs 作为存储驱动程序:
# docker info
Storage Driver: btrfs
日期:2020-09-17 00:16:25 来源:oir作者:oir