搭建私有Docker仓库,存储到阿里云OSS

Docker Registry简介

Docker Registry是开源的软件,能够进行存储和分发Docker镜像。Docker Registry包括两个关键组成部分:Docker Trusted RegistryDocker Hub。简单理解,第一个是负责存储的,第二个是负责管理镜像的。html

Docker Hub之前叫做Docker Index,Docker每次pull镜像时,都是先去Docker Index获取镜像信息,而后去保存镜像的Registry里面下载。docker

用过Docker的都知道,每次pull镜像时都很慢。后来国内出现了一些加速下载的,但是只是加速了镜像文件的下载。仍是须要去链接官方的index服务,这一步很慢,并且还可能失败。服务器

再日后,国内也提供index服务的加速了,但这样咱们就须要彻底信任他们了,由于咱们彻底不用链接官方的服务器了。若是咱们不信任他们,或者咱们有本身的私有镜像,不想发到公网去,咱们就能够用Docker官方推荐的Docker Registry了。dom


安装使用Docker Registry

下载Docker Registry的镜像

官方提供了Docker Registry的镜像文件,咱们只需执行docker pull registry就能够了。今天(206.02.24)lastest标签的registry是版本0.9.1,因此若是咱们要用最新版本2.3,能够拉取tag为2,2.3,2.3.0的均可以。执行以下命令便可:ide

docker pull registry:2

启动Docker Registry

启动:ui

docker run -d -p 443:5000 --restart=always --name registry registry:2

下载镜像,并把它上传到本身的registry:阿里云

docker pull busybox && docker tag busybox localhost/busybox
docker push localhost/busybox

这样localhost/busybox就在本身的registry中了,下次能够直接pull下来rest

docker pull localhost/busybox

镜像文件存储本地

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/data:/var/lib/registry \
  registry:2

使用https

上一篇文章介绍了如何获取证书,新建一个目录config,将证书chained.pem和密钥domain.key拷贝到目录config里面,而后执行:code

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  registry:2

下次对镜像进行操做时,能够把localhost改成这个证书对应的域名了。证书有的是crt结尾了,不要紧,把chained.pem改成你想要的名字就能够了。htm

添加权限认证

按照以前的步骤,任何人均可以push和pull这个仓库中的镜像。若是443端口暴露在外网中,最好加个权限认证。testusertestpassword分别为用户名和密码,能够修改成你想要的,而后执行:

htpasswd -Bbn testuser testpassword > config/htpasswd

若是本地没有安装htpasswd,也能够在启动了registry后执行以下命令:

docker exec registry htpasswd -Bbn testuser testpassword > config/htpasswd

而后再执行启动命令:

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/config/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  registry:2

这样,访问registry就须要先login,docker login myregistrydomain.com,按提示输入用户名和密码便可。


使用阿里云的OSS保存镜像文件

默认镜像文件存到本地磁盘,这个可扩展性不是很好,咱们能够把镜像文件存到OSS中。这个使用起来也很简单,由于官方registry中已经包含了OSS的驱动了。只需修改启动命令便可:

docker run -d -p 443:5000 --restart=always --name registry \
  -v `pwd`/config:/config \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/config/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/config/chained.pem \
  -e REGISTRY_HTTP_TLS_KEY=/config/domain.key \
  -e REGISTRY_STORAGE=oss \
  -e REGISTRY_STORAGE_OSS_ACCESSKEYID=********** \
  -e REGISTRY_STORAGE_OSS_ACCESSKEYSECRET=***************** \
  -e REGISTRY_STORAGE_OSS_REGION=oss-cn-qingdao \
  -e REGISTRY_STORAGE_OSS_BUCKET=******* \
  registry:2

将上面命令中的***替换成本身的,REGISTRY_STORAGE_OSS_REGION的值也要替换成本身oss所在的地区,若是是青岛就是oss-cn-qingdao

注:

  • region查询网址

  • 阿里云OSS的其余参数查询网址

相关文章
相关标签/搜索