配置了docker镜像加速,但是docker拉取镜像速度还是很慢

Posted Lotus-1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置了docker镜像加速,但是docker拉取镜像速度还是很慢相关的知识,希望对你有一定的参考价值。

首先影响docker拉取镜像加速的原因有几个,挨个进行检查后就会发现问题所在

1.添加docker的阿里yum源

tee /etc/yum.repos.d/docker.repo <<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

然后使用docker search搜索镜像并拉去镜像

docker search  zabbix

date && docker pull monitoringartist/zabbix-3.0-xxl && date

2.这时候拉取可以看到非常慢,就需要配置docker加速了

vi /etc/docker/daemon.json  #编辑此文件,添加以下文件




"registry-mirrors": [
     "https://docker.mirrors.ustc.edu.cn",
     "https://registry.docker-cn.com",
     "http://hub-mirror.c.163.com",
     "https://mirror.ccs.tencentyun.com"
]

常用镜像有以下这些:可以自己选择

科大:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
七牛云加速器:https://reg-mirror.qiniu.com
阿里云:https://<你的ID>.mirror.aliyuncs.com
腾讯云:https://mirror.ccs.tencentyun.com

然后重启docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

3.第三种原因就是可能就是根目录下的磁盘空间不够了

有时会提示:no space left on device 磁盘空间不足

磁盘满了分为inode和block。

inode是格式化创建文件系统时产生的,用于存放文件的属性信息,存放着block的位置,没有文件名,创建一个非空文件占用1个inode和至少1个block

block是实际存放数据的位置,block大小分为1k 4k 8k 分区大于500m默认是4K,文件很大占用多个block,文件非常小1k block剩余空间不能继续使用,所以系统中block消耗更快

df -h  #查看所有block使用情况,这里可以看到那个目录下的空间使用情况,需要留意/根目录的使用情况,如果很满的话将会影响后续软件安装和docker的镜像拉取等

du -sh /usr/* |grep G  #在根目录下执行该命令,查找大文件,再看根目录下的那个目录占用空间比较大,然后再进入到这些目录下再次执行该查找大文件的命令,直至找到那个占用空间大的文件或目录,确认该目录或文件非必要可以进行删除

df -h   #再次返回到根目录下执行该命令,就可以看到/根目录下的空间有所释放

也可以适当删除home家目录下的一些文件或目录,然后将家目录的空间分一些给到根目录下去,这个操作我后面再讲,这里的一些清除/根目录下的一些操作也是能有效释放/根目录内存的

还有就是inode满了(使用df -h发现还有空间)

df -i     #查看inode使用情况,然后根据返回,找到那个占用很大的空间的那个挂载点的目录下,即对应的后面的那个目录,查看该目录下的文件,文件小且多,评估以下这些文件是否必要,非必要可以进行删除

rm -rf 文件名   #删除文件


df -i    #再次查看inode使用情况,应该就不会那么满了

如果不知道小文件都怎么找,可以使用以下方法,找系统中 目录大小大于1M(目录一般大小为4K,所以目录要是大了那么文件必然很多)

find / -size +4k -type d |xargs ls -ldhi

还有一种情况就是文件被占用一直没彻底删除,即df -h有空间,但是放不进去东西

lsof |grep deleted  #显示系统中被打开的文件,过滤出deleted字段

显示中第一列为:软件/服务名称
显示中第八列:文件大小
显示中第十列:文件的名字或路径
显示中第是一列:标记(硬链接数为0 进程调用数不为零 就会出现delete)



/etc/init.d/rsyslog restart   #重启对应的服务 释放磁盘空间 

df -h   #再次查看所有block使用情况

Docker 拉取镜像失败处理

参考技术A 如果母机的网络环境是需要配置代理才能够访问互联网的话,那安装docker后,去拉取镜像大概率会失败。
类似如下的错误:

母机通过代理访问外网时,一般在命令行中通过 export 来设置代理

而 docker拉取镜像是通过 docker daemon 服务完成,docker daemon 服务是在另一个进程中,不会读取当前shell 命令行的代理,所以 docker pull 会失败。

官方文档

具体操作如下:

tips: 如果文件已经存在,可直接修改文件内容,添加相关代理设置

如果有不需要代理的地址,可添加 NO_PROXY 配置:

多个 NO_PROXY 变量的值用逗号分隔,而且可以使用通配符( ),极端情况下,如果 NO_PROXY= ,那么所有请求都将不通过代理服务器

docker 镜像由 docker daemon 管理,所以不能用修改 shell 环境变量的方法使用代理服务,而是从 systemd 角度设置环境变量

1、 https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
2、 https://www.lfhacks.com/tech/pull-docker-images-behind-proxy/

以上是关于配置了docker镜像加速,但是docker拉取镜像速度还是很慢的主要内容,如果未能解决你的问题,请参考以下文章

Docker配置阿里云镜像加速pull

Docker 镜像加速

Docker镜像加速

如何给Docker配置官方国内加速镜像

Linux下docker配置镜像加速后重启docker服务失败

docker 配置 阿里云镜像加速器