时间:2021-05-02
一、关于registry
官方的docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。
但是有时候我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件registry来达成目的。
registry在github上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。
从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。
官方在docker hub上提供了registry的镜像,我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。
二、搭建registry
首先搜索并拉取镜像
? 1 2 docker search registry # 建议先搜索一下,可以看一下相关的镜像,说不定哪天就有更好的镜像了 docker pull registry # 标签可以不加,因为当前最新就是v2运行一个registry容器
? 1 2 3 4 5 6 7 docker run -d \ # 后台运行 --name registry-srv \ # 指定容器名 --restart=always \ # 设置自动启动 -p 5000:5000 \ # 端口映射宿主机,通过宿主机地址访问 -v /opt/zwx-registry:/var/lib/registry \ # 把镜像存储目录挂载到本地,方便管理和持久化 -v /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml \ # 把配置文件挂载到本地,方便修改和保存 registrysrv-config.yml内容如下
标红delete参数设置为true,是为了让仓库支持删除功能。默认没有这个参数,也就是不能删除仓库镜像。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 version: 0.1 log: fields: service: registry storage: delete: enabled: true cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: x-content-type-options: [nosniff] health: storagedriver: enabled: true interval: 10s threshold: 3注册https协议(否则push安全认证过不去)
需要通过本地仓库下载镜像,均需要配置
? 1 2 3 4 5 vim /etc/docker/daemon.json # 默认无此文件,需自行添加,有则追加以下内容。 { "insecure-registries":["xx.xx.xx.xx:5000"] } # 指定ip地址或域名 systemctl daemon-reload # 守护进程重启 systemctl restart docker # 重启docker服务镜像上传与下载
? 1 2 docker push xx.xx.xx.xx:5000/nginx # 一定要注明仓库地址,否则会报错 docker pull xx.xx.xx.xx:5000/nginx查看仓库镜像信息
? 1 2 curl -xget http://xx.xx.xx.xx:5000/v2/_catalog # 查看仓库镜像列表(也可以通过windows浏览器打开查看) curl -xget http://xx.xx.xx.xx:5000/v2/image_name/tags/list # 查看指定应用镜像tag三、搭建registry web
首先搜索并拉取镜像
? 1 2 docker search docker-registry-web docker pull hyper/docker-registry-web # 这个镜像用的人较多运行一个registry web容器
? 1 2 3 4 5 6 docker run -d \ # 后台运行 --name registry-web \ # 指定容器名 --restart=always \ # 设置自动启动 -p 8000:8080 \ # 端口映射宿主机,通过宿主机地址访问 -v /opt/zwx-registry/web-config.yml:/etc/config.yml \ # 把配置文件挂载到本地,方便修改和保存 hyper/docker-registry-webweb-config.yml文件内容如下
标红readonly参数设置为false,是为了web页面可以显示删除按钮。默认是true,只读状态,没有删除按钮,只能查看。
? 1 2 3 4 5 6 7 8 9 10 registry: # docker registry url url: http://10.88.77.32:5000/v2 # docker registry fqdn name: localhost:5000 # to allow image delete, should be false readonly: false auth: # disable authentication enabled: false部署完成后,浏览器打开仓库ui地址即可查看到所有应用镜像
选择任意应用镜像库,即可查看到该镜像的所有tag信息,每个tag后面都有个删除按钮(默认没有,配置参考config.yml)
四、快捷部署
集群模式可以通过docker stack快速部署registry和registry web。
新建配置文件srv-config.yml、web-config.yml放到指定路径,再新建docker-compose.yml文件,执行命令即可。
? 1 docker stack deploy -c docker-compose.yml rgt ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 version: '3.7' # docker stack 需要是3.0以上版本 services: registry-srv: # 服务名 image: registry ports: # 映射端口 - 5000:5000 volumes: # 挂载镜像路径和配置文件,注意修改路径与实际一致 - /opt/zwx-registry:/var/lib/registry - /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml deploy: # 设置单任务,并约束主节点运行 mode: replicated replicas: 1 placement: constraints: - node.role == manager registry-web: # 服务名 image: hyper/docker-registry-web ports: # 映射端口 - 8000:8080 volumes: # 挂载配置文件,注意修改路径与实际一致 - /opt/zwx-registry/web-config.yml:/conf/config.yml environment: - registry_url=http://registry-srv:5000/v2 - registry_name=localhost:5000 deploy: # 设置单任务,并约束主节点运行 mode: replicated replicas: 1 placement: constraints: - node.role == manager总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。
原文链接:https://www.cnblogs.com/leozhanggg/p/12050322.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
微服务的镜像会上传到docker仓库保存,常用的公网docker仓库有阿里云,网易云等,在企业局域网也可以搭建自己的docker私有仓库,本教程使用docker
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程。1使用registry启动私有仓库的容器doc
docker搭建私有仓库本篇文章描述了多个机器可以在内网中访问自己的私有仓库,访问仓库时需要CA认证!最简单,最低保障私有仓库的安全性!在一个比较庞大的集群里,
为什么要弄私有仓库,大多是为了速度,我们再私有仓库中的push和pull的速度是特别快的。利用registry快速搭建https://hub.docker.co
本文实例讲述了CentOS7.2服务器上搭建Docker私有镜像仓库操作。分享给大家供大家参考,具体如下:鉴于国内pull镜像的速度较慢,很有必要搭建docke