搭建docker私有仓库,带认证功能,记录如下:


1.创建对应的目录

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

2.创建密码文件

cd /data/registry/
docker run --entrypoint htpasswd daocloud.io/registry:2.2 -Bbn ttxsgoto ttxsgoto > auth/htpasswd

3.生成签名证书

openssl req -x509 -days 3650 -subj '/CN=ttxsgoto.com/' -nodes -newkey rsa:2048 -keyout certs/registry.key -out certs/registry.crt;

4.启动,脚本存放在 /data/registry/下

#!/bin/bash

dir=$(cd `dirname $0`;pwd)
docker stop registry && docker rm registry
docker run -d -p 443:5000 --restart=always \
--name registry \
-v $dir/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry on ttxsgoto.com" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v $dir/certs:/certs \
-v $dir/data:/var/lib/registry \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \
daocloud.io/registry:2.2

5.创建存放证书目录

mkdir -p /etc/docker/certs.d/ttxsgoto.com    #将生成的证书registry.crt存放在该目录下

6.在/etc/hosts中做域名解析,如果为dns解析无需此步骤

192.168.229.133 ttxsgoto.com

7.登录验证

docker login ttxsgoto.com   #然后输入刚才的用户名和密码就可以登录,之后就可以push/pull了。
docker logout ttxsgoto.com   #注销登录
说明:登录成功后会把登录信息存放到/root/.docker/config.json文件中

8.API使用

http://ttxsgoto.com/v2/_catalog    #列出镜像名称
curl  http://ttxsgoto.com/v2/p_w_picpath_name/tags/list    #查看具体镜像p_w_picpath_name的tag


参考链接:

http://www.zimug.com/317.html