千家信息网

Docker存储驱动由overlay更改为overlay2

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,系统信息# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core)# uname -r3.10.0-514.26.2.el7.x86_6
千家信息网最后更新 2024年11月23日Docker存储驱动由overlay更改为overlay2

系统信息

# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core)# uname -r3.10.0-514.26.2.el7.x86_64

如果需要升级系统内核版本,详见Centos系统内核升级的方法。

如果升级到CentOS7版本,主要步骤:

(1)导入elrepo的key# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  (2)To install ELRepo for RHEL-7, SL-7 or CentOS-7# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm(3)在yum的elrepo源中有ml和lt两种内核,其中ml(mainline)为最新版本的内核,lt为长期支持的内核:#  yum --enablerepo=elrepo-kernel -y install kernel-lt(4)修改grub.conf文件vim /etc/grub.conf:default=0(5)修改完了就重启系统让其生效:# reboot

查看docker版本等信息

# docker info Server Version: 18.09.0  //或是17.09.0-ce版本 Storage Driver: overlay ....

为什么使用overlay2

关于 overlay 与 overlay2 有什么差别,网上资源非常多,这里不作为重点介绍。

之所以升级到 overlay2 ,是因为我们在工作中经常会遇到这样的问题:

Step 1 : FROM million12/nginx-php:latest ---> 09c053597ddaStep 2 : COPY etc/docker-jenkins/default.conf /etc/nginx/hosts.d/default.conf ---> Using cache ---> 26a29dd01af3Step 3 : COPY app /data/www/appINFO[0012] link /var/lib/docker/overlay/99380f87e1572466529c4f668b5e79fe711496e985d313cc0d2f45bfdbdb3969/root/var/lib/yum/yumdb/p/939d2078d64d51ff7ad16150745e94a26085bc93-php70-php-opcache-7.0.11-1.el7.remi-x86_64/checksum_type /var/lib/docker/overlay/9ac18f869f20ba8ba29d2a16f00f2ce6ff1c6d0d1a40192a0efb8933c8ad1c45/tmproot958106287/var/lib/yum/yumdb/p/939d2078d64d51ff7ad16150745e94a26085bc93-php70-php-opcache-7.0.11-1.el7.remi-x86_64/checksum_type: too many links

使用 overlay2 可以很好解决这一 "too many links" 问题~~

解决上面出现的"too many links" 问题,可以采用下面两种方法:

(1)临时方法:定时删除没用的镜像和已经退出的容器,使用docker system prune
(2)永久方法:将存储驱动由 overlay 升级到 overlay2。

将Docker存储驱动由 overlay 更改为 overlay2

操作之前要注意⚠️:之前 docker images 会丢失,之前运行的 docker 容器服务会丢失(docker ps),进行下面步骤之前请做好数据的备份!!!

具体操作步骤如下:

(1)关闭运行的docker服务# systemctl stop docker(2)添加 daemon.json 文件# echo "{  "storage-driver": "overlay2",  "storage-opts": [ "overlay2.override_kernel_check=true" ],  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],  "live-restore" : false}" >> /etc/docker/daemon.json(3)启动docker服务# systemctl start docker
0