测试环境
主机 | IP | 角色 |
---|---|---|
ubuntu-B | 172.18.18.158 | 私有仓库服务器 |
ubuntu-A | 172.18.18.159 | 工作节点 |
registry v2安装
docker pull registry:2
仓库服务器配置
- 配置域名
将172.18.18.158 reg.itmuch.com追加到/etc/hosts文件
echo '172.18.18.158 reg.itmuch.com' >> /etc/hosts
- 配置证书
在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/
- 配置登录认证
使用htppasswd命令创建用户,先安装apache2-utils
apt-get install apache2-utils
新加入用户名为testuser,密码为testpassword的用户
mkdir auth
htpasswd -Bbn testuser testpassword > auth/htpasswd
- 启动测试
启动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
工作节点配置
- 配置域名
同样先配置域名,将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/
- 测试
出现提示no basic auth credentials
说明需要认证,先登入仓库,使用testuser账户
docker login reg.itmuch.com
重新push
docker tag swarm reg.itmuch.com/swarm
docker push reg.itmuch.com/swarm