Docker :OverlayFS

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/textdemo123/article/details/102570449

背景:
今天有个小伙伴问我 他的k8s 环境报错,截图如下:
在这里插入图片描述
日志中最关键的一条,docker主进程退出
日志中还有一些比较游泳的信息XFS相关
问题解决:
查询了相关的issue ,发现是由于操作系统fstype=0 ,没有开启d_type
设置ftype=1 是需要开启 d_type ,开启d_type 是由docker 在运行过程中会有文件的操作,目录的操作 ,如果在不支持 d_typ 的 overlay/overlay 驱动下使用docker,也就意味着 docker 在操作文件的时候,可能会遇到一些错误。
正常情况下应该是这样:
在这里插入图片描述
参考的文档:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.2_release_notes/technology-preview-file_systems

本文主要是想介绍,学习一下docker所使用的文件系统OverlayFS

什么是overlayFS
overlayfs是一个现代的联合文件系统,类似于aufs,但速度更快,实现更简单。Docker为overlayfs提供了两个存储驱动程序:原始overlay和更新更稳定的overlay2。

本主题将Linux内核驱动程序称为overlayfs,将Docker存储驱动程序称为overlay或overlay2。

注意:如果使用overlayfs,请使用overlay2驱动程序,
而不是overlay驱动程序,因为它在inode利用率方面更有效。
要使用新的驱动程序,您需要4.0或更高版本的Linux内核,
或者使用3.10.0-514或更高版本的RHEL或CentOS。
有关overlay与overlay2之间差异的更多信息,请检查Docker存储驱动程序。

docker存储驱动

使用OverlayFS的先决条件
如果满足以下先决条件,则支持覆盖:

Docker Engine-Community和Docker EE 17.06.02-EE5及更高版本支持Overlay2驱动程序,是推荐的存储驱动程序。

Linux内核的4.0或更高版本,或使用3.10.0-514或更高版本内核的RHEL或CentOS。如果使用的是旧内核,则需要使用覆盖驱动程序,这是不推荐的。

在支持文件系统的xfs上支持overlay和overlay2驱动程序,但仅在启用d_type=true的情况下。
使用xfs_info验证ftype选项是否设置为1。要正确格式化xfs文件系统,请使用-n ftype=1标志。

警告:在没有d_类型支持的xfs上运行现在会导致docker跳过使用overlay或overlay2驱动程序的尝试。现有安装将继续运行,但会产生错误。这是为了允许用户迁移他们的数据。在将来的版本中,这将是一个致命的错误,这将阻止Docker启动。

更改存储驱动程序使得现有的容器和图像无法在本地系统上访问。在更改存储驱动程序之前,请使用Docker Save保存已生成的任何图像,或将其推送到Docker Hub或专用注册表,以便以后不必重新创建它们。

配置docker
建议使用overlay2方案
Stop Docker.

$ sudo systemctl stop docker
$ cp -au /var/lib/docker /var/lib/docker.bk

如果要使用与/var/lib/使用的备份文件系统不同的备份文件系统,请格式化该文件系统并将其装载到/var/lib/docker中。确保将此安装添加到/etc/fstab以使其永久。

vim /etc/docker/daemon.json.  

{
  "storage-driver": "overlay2"
}
$ sudo systemctl start docker

验证是否生效

$ docker info

Containers: 0
Images: 0
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true

Docker现在正在使用Overlay2存储驱动程序,并且已经使用所需的LowerDir、UpperDir、Merged和WorkDir结构自动创建了Overlay Mount。

overlay2工作原理

https://docs.docker.com/storage/storagedriver/overlayfs-driver/#prerequisites

猜你喜欢

转载自blog.csdn.net/textdemo123/article/details/102570449