配置了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拉取镜像速度还是很慢的主要内容,如果未能解决你的问题,请参考以下文章