Docker学习五:如何搭建私有仓库

一、基本概念

仓库:是存储和分发镜像的地方,分为公共镜像仓库和私有镜像仓库

注册服务器、仓库、镜像之间的关系

注册服务器是存放仓库的实际服务器,而仓库则可以被理解为一个具体的项目或者目录;注册服务器可以包含很多个仓库,每个仓库又可以包含多个镜像。例如我的镜像地址为 docker.io/centos,docker.io 是注册服务器,centos 是仓库名

 二、创建镜像仓库

公共镜像仓库

1、官网https://hub.docker.com/注册账号后

 2、通过docker login命令镜像仓库

docker login命令默认会登录Docker Hub镜像仓库,如果想登录其他第三方或者自建的镜像仓库,后面加上注册服务器即可

3、通过docker tag命令重命名仓库

docker tag busybox canghai123qwer/busybox,注意名称格式:账号/镜像名称,否则会出现“denied: requested access to the resource is denied”错误

4、通过docker pull命令可拉取上面创建的镜像

私有镜像仓库

本地仓库

1、启动本地仓库

docker run -d -p 5000:5000 --name registry registry:2.7

 2、重命名镜像后推送到本地镜像仓库

 3、删除已有的localhost:5000/busybox镜像后,通过docker pull命令拉取本地镜像

 4、镜像持久化存储

docker run -v /var/lib/registry/data:/var/lib/registry -d -p 5000:5000 --name registry registry:2.7

构建外部可访问的镜像仓库(未实践)

要构建一个支持 HTTPS 访问的安全镜像仓库,需要满足以下两个条件:

  • 拥有一个合法的域名,并且可以正确解析到镜像服务器;

  • 从证书颁发机构(CA)获取一个证书。

通过如下命令启动镜像仓库

docker run -d 
  --name registry 
  -v "/var/lib/registry/data:/var/lib/registry 
  -v "/var/lib/registry/certs:/certs 
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/regisry.lagoudocker.io.crt 
  -e REGISTRY_HTTP_TLS_KEY=/certs/regisry.lagoudocker.io.key 
  -p 443:443 
  registry:2.7

其中,使用 -v 参数把镜像数据持久化在/var/lib/registry/data目录中,同时把主机上的证书文件挂载到了容器的 /certs 目录下,同时通过 -e 参数设置 HTTPS 相关的环境变量参数,最后让仓库在主机上监听 443 端口

启动后,可以通过docker push命令远程推送镜像

docker tag busybox regisry.lagoudocker.io/busybox
docker push regisry.lagoudocker.io/busybox
原文地址:https://www.cnblogs.com/canghai1024/p/13673006.html