了解docker pull时下载的镜像

栏目: 编程工具 · 发布时间: 6年前

内容简介:默认运行完整镜像名称格式为若没有提供

默认运行 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 ,其会补充 projectlibrary
% 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.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://<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 下载镜像,有:

  1. 搜索 okd-lr.zyl.io:5000/debian ,若上面有则返回,否则搜索下一个镜像库;
  2. 搜索 quay.io/debian ,若成功则返回,否则继续搜索;
  3. 搜索 docker.io/library/debian ,因配置了 registry-mirror ,其将从此代理镜像库获取镜像,若代理镜像库中有,则直接返回,否则其先抓取镜像后再返回;

注意:

  • registry-mirror 只会代理 docker.io 默认镜像库的镜像,其他镜像库不会代理;
  • mirror 镜像库支持的代理操作,即 push/pull 均会代理到 docker.io 上;
  • mirror 镜像库若是非 TLS 配置,若要通过此 mirror pushdocker.io ,需配置 INSECURE_REGISTRY

以上所述就是小编给大家介绍的《了解docker pull时下载的镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code

Code

Charles Petzold / Microsoft Press / 2000-10-21 / USD 29.99

Paperback Edition What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of ......一起来看看 《Code》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具