简介:咱们能够把本身的image上传到dockerhub或者阿里云的docker镜像仓库,但在实际使用中咱们不少时候都用的是本身的registry,便于内部的共享等等优势,docker镜像默认支持https协议,能够用http协议,可是强烈不推荐,http协议只适合用实验阶段并且不支持设置用户名和密码。http认证是须要钱的对于只想作作实验的同窗来讲是不可接受的,下面咱们介绍下利用Let’s Encrypt构建免费的https协议。git
Let’s Encrypt官网:https://letsencrypt.org/ github
环境:docker
docker版本:Docker version 17.03.0-ce, build 60ccb22ubuntu
服务器版本:CentOS Linux release 7.3.1611 (Core)浏览器
端口开放:443,80(防火墙开放)服务器
步骤:dom
1.从该服务器上面获取证书:
$ git clone https://github.com/letsencrypt/letsencrypt.gitui
$ cd letsencrypt阿里云
$ sudo ./letsencrypt-auto certonlyrest
2.根据该向导,选用standalone模式填写本身的邮箱域名等等,最后获取到的证书文件放在/etc/letsencrypt/archive/docker.mydomain.com/。首先备份这些证书到本身电脑上去
3.而后找一个地方存放证书
cp /etc/letsencrypt/archive/mydomain.com/cert1.pem /home/certs/docker.mydomain.com.crt
cp /etc/letsencrypt/archive/mydomain.com/privkey1.pem /home/certs/docker.mydomain.com.key
启动这个证书后在浏览器里面已经能够看到https成功访问了,可是docker支持的不够好,但你push,pull的时候会报错unknow authority,这个时候咱们须要继续在Let’s Encrypt官网下载两个证书
wget https://letsencrypt.org/certs/isrgrootx1.pem
wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
下好了之后咱们把下面两个证书整合到.crt证书中,最简单的办法就是进入下面两个文件文件直接copy所有内容,而后粘贴到上面的.crt文件中,最后.crt文件有三对begin和end
最后咱们启动docker registry:
docker run -d -p 5000:5000 --restart=always --name registry \
-v /opt/data:/var/lib/registry \
-v /home/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.mydomain.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/docker.mydomain.com.key \
registry:2
咱们就能够直接push,pull了例如:push ubuntu docker.mydomain.com:5000/ubuntu