内容简介:默认运行完整镜像名称格式为若没有提供
默认运行 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)
完整镜像名称格式为 <hostname>/<namespace|project>/<image>:<tag> 。
- 镜像提供了完整主机名称,则 docker 从此镜像库下载镜像,如从 quay.io 镜像库的 coreos 项目下载 etcd:latest 镜像:
% docker pull quay.io/coreos/etcd
- 若省略了 hostname ,则默认从 docker.io 下载镜像,而若省略 project ,其会补充 project 为 library :
% docker pull library/debian Using default tag: latest Trying to pull repository docker.io/library/debian % docker pull debian # 未明确指定project,从docker.io下载时默认补充library/<image> 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.io 的 mirror ,如配置了 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://<ip>:<port>\ -e HTTPS_PROXY=http://<ip>:<port>\ -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 push 到 docker.io ,需配置 INSECURE_REGISTRY ;
以上所述就是小编给大家介绍的《了解docker pull时下载的镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- KVM镜像制作及挂载镜像文件
- 查看Docker镜像仓库中镜像的所有标签
- Vagrant 使用国内镜像安装插件和 box 镜像
- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
- Harbor 1.7 发布,在线 GC、镜像历史、镜像复制
- docker k8s 集群部署tomcat,使用一个镜像,增加镜像的复用性。
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。