前言:

        需要在阿里云服务器上搭建自己的私有docker镜像仓库,需求:1)、pull和push时需要登录才能操作;2)、传输通过https保证安全性;下面把操作步骤进行了记录。

一、pull registry镜像

执行命令:

docker pull registry:2

二、创建账号和密码,并且通过docker加密

1、创建几个文件夹,用于启动容器的时候挂载上去

mkdir -p /data/docker-registry/

cd  /data/docker-registry && mkdir auth  certs  registry

创建好的文件夹如下:

3、创建账号密码文件,并加密

进入到 auth目录(cd /data/docker-registry/auth)

执行下面命令:

echo "user:docker passwd:123123" >htpasswd

docker run --entrypoint htpasswd registry:2.7.0 -Bbn docker 123123 > /data/docker-registry/auth/htpasswd

三、https证书配置操作

       1、申请https 证书

        我这边是通过阿里云申请的,申请好把公钥和私钥放入到certs目录下。如果你们不想花钱买,那么可以自己生成一个,这个自己百度。

        我申请的证书如下:

 2、把公钥拷贝一份到 /etc/docker/certs.d/

cp harbor.pem  /etc/docker/certs.d/harbor.zaitugongda.com:5000/

这里注意下,进入到/etc/docker/certs.d/后,创建一个目录,目录名同docker的仓库地址(我的是harbor.zaitugongda.com:5000)

四、启动容器

docker run -itd -p 5000:5000 --restart=always --name registry \

-v /data/docker-registry/certs:/certs \

-v /data/docker-registry/auth:/auth \

-v /data/docker-registry/registry:/var/lib/registry \

-e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/harbor.pem" \

-e "REGISTRY_HTTP_TLS_KEY=/certs/harbor.key" \

-e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

说明: 
-v 指定挂载目录,宿主机:容器目录

-e 指定了公钥和私钥的位置,以及密码文件位置

五、测试

1、在本地机器上登录仓库:

2、docker push 

        这里给出一个shell文件, 我用这个文件打包image,再打一个tag后push到registry.

#!/bin/bash
image_name_version=$1
docker build -t ${image_name_version} .
docker tag ${image_name_version} harbor.zaitugongda.com:5000/stefan/${image_name_version}
docker push harbor.zaitugongda.com:5000/stefan/${image_name_version}
if [ $? -eq 0 ]
then
    echo "push ok"
else
    echo "push faild"
fi

执行命令:

bash build.sh service_image:v1.0

3、docker pull

docker pull  harbor.zaitugongda.com:5000/stefan/service_image:v1.0

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐