簡介:我們可以把自己的image上傳到dockerhub或者阿里雲的docker鏡像倉庫,但在實際使用中我們很多時候都用的是自己的registry,便於內部的共享等等優點,docker鏡像默認支持https協議,可以用http協議,但是強烈不推薦,http協議只適合用實驗階段而且不支持設置用戶名和密碼。http認證是需要錢的對於只想做做實驗的同學來說是不可接受的,下面我們介紹下利用Let’s Encrypt構建免費的https協議。
Let’s Encrypt官網:https://letsencrypt.org/
環境:
docker版本:Docker version 17.03.0-ce, build 60ccb22
服務器版本:CentOS Linux release 7.3.1611 (Core)
端口開放:443,80(防火牆開放)
步驟:
1.從該服務器上面獲取證書:
$ git clone https://github.com/letsencrypt/letsencrypt.git
$ cd letsencrypt
$ sudo ./letsencrypt-auto certonly
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