docker搭建私有仓库

简介: 紧接上一篇镜像发布到官方之后,我们来搭建我们自己的私有仓库,比较,如果真的要在生产环境使用的话,这是必须的。首先,我们来准备一下搭建私有仓库所需要的信息。#先吧私有仓库down下来,这需要一点时间,刚好这中间的时间,我们可以准备一下其他的东西docker pull registry紧接着,registry需要https运行环境,所以来生成我们自己的证书(简单说明一下,目前的registry版本是2,之前的1是支持非ssl的,docker在0.9以下。

紧接上一篇镜像发布到官方之后,我们来搭建我们自己的私有仓库,比较,如果真的要在生产环境使用的话,这是必须的。
首先,我们来准备一下搭建私有仓库所需要的信息。

#先吧私有仓库down下来,这需要一点时间,刚好这中间的时间,我们可以准备一下其他的东西
docker pull registry

紧接着,registry需要https运行环境,所以来生成我们自己的证书(简单说明一下,目前的registry版本是2,之前的1是支持非ssl的,docker在0.9以下。)
先交代一下环境:物理机是win10,使用hyper-v 虚拟一个cenots(ip:192.168.50.2)作为我们的docker host。使用内部网络,物理机共享本地网络方式连接上网。私有仓库使用域名local.registry.docker.com,端口:3075。

#创建证书文件夹
mkdir certs
#创建registry登录用户配置文件文件夹
mkdir auth
#生成我们的ssl证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/local.registry.docker.com.key -x509 -days 365 -out /certs/local.registry.docker.com.crt
#创建一个我们的private registry用户,admin admin 就是账号和密码了。
docker run --entrypoint htpasswd registry:2 -Bbn admin admin > /auth/htpasswd

网络环境还不错的情况下,这个时候pull registry应该也已经完成了。那......
然后,把我们的 私有仓库跑起来先

docker run -dit -p 3075:5000 --restart=always --name hub \
  -v /auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/local.registry.docker.com.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/local.registry.docker.com.key \
  registry:2

img_6945ade3268987988f2aa7d741efff9e.png
解释一下参数:
-d:表示容器后台运行
-p:端口映射
--restart=always:可以理解为开机启动。开机:就是启动docker客户端拉。
--name registry:给容器取一个名字,方便识别和记忆
-v:挂在本地文件到容器中。命令格式:hostdir:cdir[:rw|ro] 主机目录:容器目录[:读写权限]
-v pwd/auth:/auth:挂在本地的密码文件夹
-v pwd/certs:/certs:挂在本地的ssl证书文件夹

-e:设置环境变量参数
-e REGISTRY_AUTH:验证方式
-e REGISTRY_AUTH_HTPASSWD_REALM:验证域名
-e REGISTRY_AUTH_HTPASSWD_PATH:密码文件路径
-e REGISTRY_HTTP_TLS_CERTIFICATE:ssl证书文件路径
-e REGISTRY_HTTP_TLS_KEY:ssl证书文件路径
最后的registry则是镜像的名字了。具体参数什么的,可以参考registry官方文档地址
centos docker客户端配置私有仓库信任

#在每个安装docker客户端的机器上执行。将前面搭建私有仓库创建的ssl证书copy到/etc/docker/certs.d/[仓库地址],如果不走这一步,就会收到下下下图的这种错误 x509.......
mkdir -p /etc/docker/certs.d/local.registry.docker.com:3075
cp /certs/local.registry.docker.com.crt  /etc/docker/certs.d/local.registry.docker.com\:3075/

windows配置私有仓库
img_95a5b82c6a6fe69f94c964df21228ea7.png
在然后,登录到私有仓库
img_84ae7d28e7b43a83b8b06b407eb95762.png
img_455f8fff53cdda4a7ed2492fb853de9a.png

在在然后,吧我们刚才的hello world项目push到我们的本地仓库
docker tag imageid imagename:给镜像打个tag,然后push这个tag到本地仓库。
img_1914133a42bc758b39e21bccca4672a5.png
在在在然后,把我们的私有仓库的hello world跑起来
img_838347ecd7818149ac4af77e86fd85dd.png

在在在在然后,在文章的最后,我们在装一个私有仓库web ui浏览工具(hyper/docker-registry-web):
img_873d219c1c13e4a15c44cbd7baf1606f.png
本来想安装一个web ui管理工具:konradkleine/docker-registry-frontend,但是......,奈何......启动提示 no mpm loaded 错误。详见问题描述及解决办法https://github.com/kwk/docker-registry-frontend/issues/88。不想折腾了,索性安装另外一个web ui 浏览工具
话说web ui还是有好几个的,排在最前面的3个ui镜像,第一个安装有错误,要特殊处理,那我们就安装第二个好了......
img_e15613f58b1fe5d7246f2352207da482.png

docker run -dit -p 8899:8080 --restart=always --name registry-web-manager --link registry -e REGISTRY\_BASIC\_AUTH="YWRtaW46YWRtaW4=" -e REGISTRY\_TRUST\_ANY\_SSL=true -e REGISTRY\_URL=https://local.registry.docker.com:3075/v2/ -e REGISTRY\_NAME=https://local.registry.docker.com:3075 --add-host local.registry.docker.com:192.168.50.2 hyper/docker-registry-web

安装脚本参数解释
--link registry:容器之间建立联系,个人猜测,起始不需要,因为没用到.......
-e REGISTRY_BASIC_AUTH:连接到私有仓库的账号密码base64结果(base64(username:password))。所以为什么仓库为什么要选择htpasswd验证方式了。
-e REGISTRY_TRUST_ANY_SSL:忽略ssl错误,因为我们用的是自签名的ssl证书
-e REGISTRY_URL:仓库访问地址
-e REGISTRY_NAME:仓库名
--add-host local.registry.docker.com:192.168.50.2:增加一条本地host。指示对我们local.registry.docker.com的访问解析到我们的docker host机器上,这样,在我们的web ui容器中访问我们的私有仓库地址时,才能正确解析。
这几天的学习和折腾就暂时到这里了,后续在研究一下docker-compose容器编排和自动构建部署。

目录
相关文章
|
2月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
149 15
Docker自建仓库之Harbor高可用部署实战篇
|
2月前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
91 1
|
1月前
|
网络协议 应用服务中间件 nginx
私有的docker私有镜像站仓库harbor
私有的docker私有镜像站仓库harbor
|
2月前
|
存储 测试技术 数据安全/隐私保护
Docker自建仓库之Harbor部署实战
关于如何部署和使用Harbor作为Docker企业级私有镜像仓库的详细教程。
668 12
|
2月前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
1164 8
|
2月前
|
运维 数据安全/隐私保护 Docker
Docker自建仓库之Docker Registry部署实战
关于如何使用Docker Registry镜像搭建本地私有Docker仓库的实战教程,包括了下载镜像、创建授权目录和用户名密码、启动Registry容器、验证端口和容器、测试登录仓库、上传和下载镜像的详细步骤。
798 5
|
3月前
|
存储 Docker 容器
阿里云私有docker仓库构建海外镜像
【8月更文挑战第25天】
331 3
|
4月前
|
存储 Docker 容器
入职必会-开发环境搭建50-Docker必会搭建Docker私有仓库
Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地也可以把我们自己的镜像推送上去。但是有时候我们的服务器无法访问互联网或者不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的Docker私有仓库来存储和管理自己的Docker镜像。
入职必会-开发环境搭建50-Docker必会搭建Docker私有仓库
|
2月前
|
应用服务中间件 nginx 数据安全/隐私保护
使用Harbor搭建Docker私有仓库
Harbor是一款开源的企业级Docker仓库管理工具,分为私有与公有仓库两种类型,其中私有仓库被广泛应用于运维场景。Harbor提供图形化界面,便于直观操作,并且其核心组件均由容器构建而成,因此安装时需预先配置Docker及docker-compose。Harbor支持基于项目的用户与仓库管理,实现细粒度的权限控制;具备镜像复制、日志收集等功能,并可通过UI直接管理镜像,支持审计追踪。部署Harbor涉及配置文件调整、登录认证等步骤,并可通过客户端进行镜像的上传、拉取等操作。系统内置多种角色,包括受限访客、访客、开发者、维护人员及管理员,以满足不同场景下的使用需求。
136 0
|
4月前
|
Ubuntu Java Docker
docker 搭建私有仓库并发布私有镜像
docker 搭建私有仓库并发布私有镜像
417 1
下一篇
无影云桌面