centos8使用docker_Docker: 教程05 - (选择合适的存储驱动)

1c3079f1b8635c15e08217de24f36ae4.png

了解 Storage Driver

Storage Driver provide a pluggable framework for managing the temporary, Internal storage of a container's writeable layer.
  • Storage Driver 管理的是 container 写入层内部的临时存储。

简单的来讲,装在 docker 中的软件需要写入数据,我们并没有 mount point 或者是外部存储设备,我们需要写入数据到内部的临时存储。

  • Storage Driver 提供一个可插拔式的框架来管理这个内部的临时存储。

选择不同的 storage driver, 我们管理这个内部存储的方式也将不同,这样 docker 就可以在不同的环境中支持不同的系统。

Storage Driver 的种类

Docker 支持很多种类的 Storage Driver 。但我们需要基于我们的使用环境来选择最适合的存储驱动。

我们介绍下最常用的两种存储驱动:

  • overlay2 这是 file-base storage(文件系统类型的存储,文件的读写和修改喝药上传和下载全部的文件)。默认在 Ubuntu 和 CentOS 8+ 中使用。
  • devicemapper 这是 block-storage(基于块的存储,文件的读写和修改不需要上传和下载全部的文件)。默认在 CentOS 7和旧版本中使用。
overlay2 performs better when you do a lot of reading to the container. devicemapper performs better when you are doing a lot of writing to the container layers.
  • 其他类型的存储驱动可以在下面的链接获取更多资料。
Docker storage drivers​docs.docker.com
b2ba7ec2b0461007fa374b957ba37a42.png

测试 CentOS7 的 Storage Driver 配置

我们可以使用下面的命令来查看现在的 storage driver 配置

[Alick@Al-TERAFORM-CENTOS-1 ~]$ docker info | grep 'Storage Driver'
Storage Driver: overlay2

如果你想要修改 storage driver 的设置, 有两种方法来实现:

  • 第一种办法就是在 docker 启动的时候添加 “--storage-driver” flag
  • 第二种办法就是在 “/etc/docker/daemon.json” 中修改 “storage-driver” 的 value

Method 1 - PASS the flag

我们在修改文件 /usr/lib/systemd/system/docker.service

[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo vi /usr/lib/systemd/system/docker.service
[sudo] password for Alick:

在中间找到带 “ExecStart” 这一行

# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

然后添加 “--storage-driver devicemapper” 这个 flag,修改为

# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --storage-driver devicemapper -H fd:// --containerd=/run/containerd/containerd.sock

修改保存完之后,我们重启 systemd 服务并重启 docker

[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl daemon-reload
[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl restart docker

然后我们在使用 docker-info 来查看

[Alick@Al-TERAFORM-CENTOS-1 ~]$ docker info | grep 'Storage Driver'
Storage Driver: devicemapper
WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release.
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
         Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.

但是这种方法其实并不是推荐的办法。

Method 2 - PASS the flag

在执行第二种方法之前,请确定我们已经 rollback 了第一种方法所修改的配置

请修改文件 /usr/lib/systemd/system/docker.service

[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo vi /usr/lib/systemd/system/docker.service
[sudo] password for Alick:

在中间找到带 “ExecStart” 这一行并恢复为如下的配置

# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改保存完之后,我们重启 daemon 服务并重启 docker

[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl daemon-reload
[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl restart docker

然后我们修改下面的 configuration file

sudo vi /etc/docker/daemon.json

修改 daemon configuration file 的内容

{
  "storage-driver": "overlay2"
}

修改保存完之后,我们重启 daemon 服务并重启 docker

[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl daemon-reload
[Alick@Al-TERAFORM-CENTOS-1 ~]$ sudo systemctl restart docker

然后我们在使用 docker-info 来查看, 可以看到我们使用这种推荐的方法修改成功了。

[Alick@Al-TERAFORM-CENTOS-1 ~]$ docker info | grep 'Storage Driver'
Storage Driver: overlay2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值