搭建带认证的私有仓库

2017-10-21  本文已影响0人  ufoooooooy

测试环境

主机 IP 角色
ubuntu-B 172.18.18.158 私有仓库服务器
ubuntu-A 172.18.18.159 工作节点

registry v2安装

docker pull registry:2

仓库服务器配置

  1. 配置域名
    将172.18.18.158 reg.itmuch.com追加到/etc/hosts文件
echo '172.18.18.158 reg.itmuch.com' >> /etc/hosts
  1. 配置证书
    在ubuntu-B中使用OpenSSL生成自签名证书
mkdir -p certs && cd certs
openssl genrsa -out reg.itmuch.com.key 2048

键入命令后需要填入的信息:

其中确保Common Name填入域名
将证书添加到docker的根证书中

mkdir -p /etc/docker/certs.d/reg.itmuch.com
cp ~/certs/reg.itmuch.com.crt /etc/docker/certs.d/reg.itmuch.com/
  1. 配置登录认证
    使用htppasswd命令创建用户,先安装apache2-utils
apt-get install apache2-utils

新加入用户名为testuser,密码为testpassword的用户

mkdir auth
htpasswd -Bbn testuser testpassword > auth/htpasswd
  1. 启动测试
    启动registry
docker run -d \
  --restart=always \
  --name registry \
  -v `pwd`/certs:/certs \
  -v `pwd`/auth:/auth \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/reg.itmuch.com.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/reg.itmuch.com.key \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -p 443:443 \
  registry:2

push镜像

docker tag nginx reg.itmuch.com/ nginx
docker push reg.itmuch.com/ nginx

工作节点配置

  1. 配置域名
    同样先配置域名,将172.18.18.158 reg.itmuch.com追加到/etc/hosts文件
echo ‘172.18.18.158 reg.itmuch.com’ >> /etc/hosts

在ubuntu-A机器中使用scp命令登录ubuntu-B拷贝证书文件

scp root@172.18.18.158:/root/certs/reg.itmuch.com.crt /etc/docker/certs.d/reg.itmuch.com/
  1. 测试

出现提示no basic auth credentials
说明需要认证,先登入仓库,使用testuser账户

docker login reg.itmuch.com

重新push

docker tag swarm reg.itmuch.com/swarm
docker push reg.itmuch.com/swarm
上一篇下一篇

猜你喜欢

热点阅读