系统信息
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
# uname -r
3.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
---> 09c053597dda
Step 2 : COPY etc/docker-jenkins/default.conf /etc/nginx/hosts.d/default.conf
---> Using cache
---> 26a29dd01af3
Step 3 : COPY app /data/www/app
INFO[0012] link /var/lib/docker/overlay/99380f87e1572466529c4f668b5e79fe711496e9
85d313cc0d2f45bfdbdb3969/root/var/lib/yum/yumdb/p/939d2078d64d51ff7ad16150745e94
a26085bc93-php70-php-opcache-7.0.11-1.el7.remi-x86_64/checksum_type /var/lib/doc
ker/overlay/9ac18f869f20ba8ba29d2a16f00f2ce6ff1c6d0d1a40192a0efb8933c8ad1c45/tmp
root958106287/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