问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Docker开源仓库建立代理缓存仓库

发布网友 发布时间:2022-04-20 20:24

我来回答

1个回答

热心网友 时间:2022-04-11 03:45

开源Docker仓库v2 的其中一个最新特性:能够被用作代理缓存仓库,以缓存Docker Hub上的镜像。运行一个缓存仓库允许你在本地储存镜像,减少过多的通过互联网从Docker Hub拉取镜像,这个特性对于一些在他们环境中拥有数量庞大的Docker引擎的用户来说很有用。跟着本篇教程,你可以让Docker引擎从本地代理缓存仓库拉取镜像,而不是让每个引擎总是从Docker Hub拉取,从而节省时间和带宽。

你可以这样开始:
####要求:
- Docker引擎1.8.3
- Docker仓库v2
- 足够储存Docker镜像的磁盘空间
- TLS证书和密钥
持久化数据
在这个例子中,我们会假设你会储存所有持久化数据在本地文件系统的<code>/data</code>路径下,这个路径下包含TLS证书和密钥文件,配置文件和镜像缓存文件。我们之后会用卷挂载这个目录进运行仓库的容器。
保护你的代理缓存仓库安全
代理缓存仓库需要一个TLS证书来保证Docker引擎和缓存仓库之间的连接安全,在这个例子中,我们会放置我们证书文件(<code>domain.crt</code>)和密钥文件(<code>domain.key</code>)在主机的<code>/data</code>目录。
更多关于使用TLS加强仓库安全的信息,请参照 Docker仓库2.0文档 。
创建代理缓存仓库配置文件
下一步你需要创建一个配置文件,来把这个仓库用作代理缓存。你可以用cat命令把<code>registry:2</code>镜像中的缺省配置文件重定向输出到一个文件中:
sh
$ docker run -it --rm --entrypoint cat registry:2 \
/etc/docker/registry/config.yml > /data/config.yml

<code>我强烈建议从Docker镜像中获得这个默认配置,而不是使用例子中的配置,因为将来这个默认配置可能会有更新。</code>
默认的config.yml例子:
yaml
version: 0.1
log:
fields
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000

修改'http'这节配置上TLS:
yaml
http:
addr: :5000
tls:
certificate: /var/lib/registry/domain.crt
key: /var/lib/registry/domain.key

在配置文件中新加一节'proxy'来开启缓存:
点击打开文档( https://github.com/docker/dist ... or.md )
yaml
proxy:
remoteurl: https://registry-1.docker.io
username: [username]
password: [password]

'username'和'password'这两个选项是可选的,这是Docker Hub账号的用户名和密码,设置上这两个选项,会使代理缓存仓库获取到这个账号的同等权限,也就是说,这个用户有权限获取的镜像,这个缓存仓库同样有权限获取。
<code>请确保完全理解设置这个Docker Hub账号背后意味着什么,并且确保你镜像的安全还有严格的访问权限!如果你不确定,请不要再配置包含用户名和密码,那么你的代理缓存仓库就只会缓存公共镜像。</code>
启动代理缓存仓库的容器:
sh
$ docker run -d --restart=always -p 5000:5000 --name v2-mirror \
-v /data:/var/lib/registry registry:2 /var/lib/registry/config.yml

以上命令使用一个卷把宿主机上的/data挂载进了容器中,使容器能使用持久储存镜像缓存,TLS证书和密钥,还有自定义的仓库配置文件。
验证你的代理缓存仓库已经启动并正常运行:
sh
$ curl -I https://mycache.example.com:5000/v2/
HTTP/1.1 200 OK
Content-Length: 2
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
Date: Thu, 17 Sep 2015 21:42:02 GMT

配置你的Docker引擎使用代理缓存仓库
修改Docker守护进程的启动参数,加上<code>--registry-mirror</code>选项:
sh
--registry-mirror=https://<my-docker-mirror-host>:<port-number>

例如,如果你的缓存仓库的主机名为mycache.example.com并且仓库服务端口为5000,你需要加上以下选项到守护进程的参数:
sh
--registry-mirror=https://mycache.example.com:5000

参考 在各种的Linux分发版中配置运行Docker 了解更多信息关于如何添加Docker守护进程参数。
测试你的代理缓存仓库
从Docker Hub上拉取一个你本地没有的镜像。例如,busybox:latest镜像:
sh
$ docker pull busybox:latest

检查缓存仓库中的目录,验证busybox镜像是否被缓存:
sh
$ curl https://mycache.example.com:5000/v2/_catalog
{"repositories":["library/busybox"]}

你也可以验证latest标签是否被缓存:
sh
$ curl https://mycache.example.com:5000/v2/library/busybox/tags/list
{"name":"library/busybox","tags":["latest"]}

现在开始当你拉取镜像时,镜像将被缓存到你的代理缓存仓库,之后拉取相同的镜像时会更快,并且这些镜像缓存会维护自身,当他们不再被使用时将会自动清除。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
燃气热水器声音轰轰的响正常吗 燃气热水器点火后滋滋响,就不加热了 男属蛇女属龙的姻缘 张学友那第几届最佳男配角 17岁时的爱情会长久的机率有多大? 17岁的爱情能长久吗 17岁的爱情可以长久么? 17岁的爱可以永远吗 “坎水逆流朝丙户”的出处是哪里 ...急 急 若懂这方面知识的兄弟指点小的我一下 比如背压怎么调... vivo手机绑定邮箱号多少 jenkins 执行docker run需要root权限怎么设置 vivo u1x骁龙465处理器能不能流畅玩率土之滨? 运行docker 出错。我在运行docker run centos echo... 我玩率土之滨 之前用的手机是小米手机,现在小米手... 率土之滨vivo账号怎么卖 centos7下docker run命令,如何根据环境变量编写命... vivo x20可以连接广汽本田滨智屏幕吗? docker restart always怎么关闭 率土之滨vivo端账号如何改oppo? 率土之滨vivo手机账用什么模拟器 vivo端口的率土之滨怎么解绑手机号? vivo率土之滨怎么更换绑定手机 率土之滨vivo官网从哪里下 上海vivo售后服务哪个好 率土之滨手游vivo版在哪下载 手机看电影电视剧用什么软件最好 率土之滨vivo端账号如何改opp? 率土之滨电脑版如何登录vivo账号 怎样在手机里免费看电视剧 vivox70闹钟是禁止储存和日历还是允许 有没有觉得docker原生命令不是很方便 每个docker一个ip地址吗 为什么运行docker命令返回&quot;/var/run/docker.sock&quot;... 成语 不拘一格 意思 今天刚买入的基金,第二天就可以直接卖出吗? 基金第一天买第二天可以卖吗手续费是多少? 麻烦问下基金当天买第二天就可以卖吗 支付宝买了500的白酒基金,卖出为什么只有300多? 基金买入500块手续费1.5,卖出要扣多少钱? 基金买了500卖出只有410.8元是怎么回事? 比如我的基金买入5000。收益500。超过了七天了,我... 为什么我的基金500块钱卖出去扣我八十多块? 基金买入5000,收益500,超过了七天卖掉的话要多少... 基金买了500卖出只有488.9 为什么基金买500卖只有200呢,剩下的钱就没了吗? 买了500块钱的基金,现在显示最多卖出330.02份是什... 为什么我买了500元的基金,全部卖出只有187元怎么... 买了不到一个星期的基金500,然后赎回,不到一个礼... 基金买了500卖出只有374,剩下一百多能回来吗