之前介绍过简单的搭建docker私有仓库的方法(见http://blog.csdn.net/jthink_/article/details/50596239),但是如果是在测试、开发、生产环境中都使用该私有仓库,必须做一些认证授权相关的限制,否则任何人都能创建和更改一个镜像,这样有可能会对镜像造成污染。

安装docker
简单方式,daocloud提供的方式:curl -sSL https://get.daocloud.io/docker | sh
官网的方式比较慢,daocloud每3小时会去同步更新官方的源,所以采用这样的方式安装还是比较靠谱的
安装docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
创建docer私有仓库
    生成签名证书
    一般情况下,证书只支持域名的访问,要使他支持ip访问,需要修改如下配置
    sudo vim /etc/ssl/openssl.cnf
    加入如下内容:
    [ v3_ca ]
    subjectAltName = IP:192.168.xx.xx
    生成证书
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
    生成密码
    sudo docker run --entrypoint htpasswd registry:2 -Bbn username password > auth/htpasswd
    私有仓库搭建
    sudo docker run -d -p 5000:5000 --restart always --name registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /home/xxx/docker/registry:/var/lib/registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2
私有仓库使用
mkdir /etc/docker/certs.d/192.168.xx.xx:5000
sudo cp ~/docker/certificate/certs/domain.crt ca.crt
sudo docker login
然后输入用户名和密码
PS:在所有需要使用私有仓库的地方都需要做上述步骤的授权认证