资讯专栏INFORMATION COLUMN

了解docker pull时下载的镜像

dadong / 910人阅读

摘要:默认运行获取镜像时,其仓库地址为,执行有完整镜像名称格式为。由于主机没法访问外网,则报错退出。

默认运行docker pull获取镜像时,其仓库地址为docker.io,执行docker info有:

% docker info
...
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)

完整镜像名称格式为//:

镜像提供了完整主机名称,则docker从此镜像库下载镜像,如从quay.io镜像库的coreos项目下载etcd:latest镜像:

% docker pull quay.io/coreos/etcd

若省略了hostname,则默认从docker.io下载镜像,而若省略project,其会补充projectlibrary

% docker pull library/debian
Using default tag: latest
Trying to pull repository docker.io/library/debian
% docker pull debian           # 未明确指定project,从docker.io下载时默认补充library/
Using default tag: latest
Trying to pull repository docker.io/library/debian 

若没有提供hostname,则下载镜像顺序从Registries列表获取,但默认只有docker.io,可调整顺序,如:

% vi /etc/sysconfig/docker
ADD_REGISTRY="--add-registry okd-lr.zyl.io:5000 --add-registry quay.io"
INSECURE_REGISTRY="--insecure-registry okd-lr.zyl.io:5000" # 镜像库若是非TLS,则必须添加此参数

此时docker info显示如下:

Registry: https://okd-lr.zyl.io:5000/v1/     # 这里没啥用
Experimental: false
Insecure Registries:
 okd-lr.zyl.io:5000          # 非安全镜像库
 127.0.0.0/8
Live Restore Enabled: false  # 由ADD_REGISTRY添加了2个镜像库
Registries: okd-lr.zyl.io:5000 (insecure), quay.io (secure), docker.io (secure)

若此时下载镜像,则顺序遍历Registries列出的镜像库:

% docker pull etcd
Using default tag: latest
Trying to pull repository okd-lr.zyl.io:5000/etcd ...
Trying to pull repository quay.io/etcd ... 
Trying to pull repository docker.io/library/etcd ... 
Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 134.194.18.2:53: read udp 134.194.18.3:45004->134.194.18.2:53: i/o timeout

如上所示,docker顺序遍历了3个镜像库,而在前两个镜像库没找到后,从docker.io镜像库查找,此时其会添加library项目,而其他的镜像库地址不会添加。由于主机没法访问外网,则报错退出。

okd-lr.zyl.io:5000私有镜像库配置为docker.iomirror,如配置了REGISTRY_PROXY_REMOTEURL

% cat /etc/systemd/system/local-registry.service 
[Unit]
Description=Local Docker Mirror registry cache
Requires=docker.service
After=docker.service

# HTTP_PROXY、HTTPS_PROXY替换为实际代理
# NO_PROXY配置不走代理的IP地址,如示例192.168.10.x为宿主机IP地址
[Service]
ExecStartPre=-/usr/bin/docker rm -f local-registry
ExecStart=/usr/bin/docker run --name %p 
     -v /data/local-registry:/var/lib/registry 
     -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry 
     -e REGISTRY_PROXY_REMOTEURL=https://registry.docker-cn.com 
     -e HTTP_PROXY=http://:
     -e HTTPS_PROXY=http://:
     -e NO_PROXY="localhost,127.0.0.1,.cluster.local,.svc,.zyl.io,172.30.0.1,192.168.10.3,192.168.10.4" 
     -p 5000:5000 registry
ExecStop=-/usr/bin/docker stop -t 2 %p
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

此时配置--registry-mirror,如:

vi /etc/sysconfig/docker
OPTIONS="--registry-mirror=http://okd-lr.zyl.io:5000 --selinux-enabled --log-driver=journald --signature-verification=false"
ADD_REGISTRY="--add-registry okd-lr.zyl.io:5000 --add-registry quay.io"
INSECURE_REGISTRY="--insecure-registry okd-lr.zyl.io:5000"

此时执行docker pull debian下载镜像,有:

搜索okd-lr.zyl.io:5000/debian,若上面有则返回,否则搜索下一个镜像库;

搜索quay.io/debian,若成功则返回,否则继续搜索;

搜索docker.io/library/debian,因配置了registry-mirror,其将从此代理镜像库获取镜像,若代理镜像库中有,则直接返回,否则其先抓取镜像后再返回;

注意

registry-mirror只会代理docker.io默认镜像库的镜像,其他镜像库不会代理;

mirror镜像库支持的代理操作,即push/pull均会代理到docker.io上;

mirror镜像库若是非TLS配置,若要通过此mirror pushdocker.io,需配置INSECURE_REGISTRY

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27937.html

相关文章

  • Docker 入门(一):理解三大核心

    摘要:镜像加速国内有非常多的镜像仓库,本文介绍使用阿里云的,后文我们也会介绍把自己的镜像上传到阿里云,并且该服务是免费的。访问这个地址如果没有阿里云账号的就自己注册一个。最好还是用国内的速度比较快,这里介绍阿里云的。 showImg(https://xings.oss-cn-shanghai.aliyuncs.com/image/docker/dockers.png); Docker 的前世...

    李世赞 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    Binguner 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    yexiaobai 评论0 收藏0
  • Docker镜像细节

    摘要:简单来说是镜像的源码。例如,的镜像镜像,在中是一个基础镜像的镜像也是镜像那么镜像和共享同一个基础镜像层,提高了存储效率。 前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y showImg(https://segmentfault.com/img/remote/14600000180560...

    xiaokai 评论0 收藏0
  • docker专题(2):docker常用管理命令(上)

    摘要:在不存在的情况下,命令行下上去的会为我们创建为私有库,然而通过浏览器创建的默认为公共库。从启动一个命令首先会从特定的创之上一层可写的,然后通过命令来启动它。下文继续专题常用管理命令下参考中文指南翻译从入门到实践基础与高级原文链接地址 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来。 根据自己的理解,总的来说...

    Edison 评论0 收藏0

发表评论

0条评论

dadong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<