Docker搭建registry 私人倉(cāng)庫(kù)

一、Docker搭建registry 私人倉(cāng)庫(kù)簡(jiǎn)易版
docker run --restart=always --name=registry2.3 -v /home/registry/data:/var/lib/registry -d -p 5000:5000  registry:2.3

說(shuō)明: -v /home/registry/data:/var/lib/registry 是把鏡像存儲(chǔ)目錄掛載到宿主機(jī),才不會(huì)刪容器導(dǎo)致數(shù)據(jù)丟失

這樣就可以運(yùn)行使用registry:2.3,但是這是對(duì)所有人開(kāi)放,并不安全,更好的方案是結(jié)合第三方存儲(chǔ)服務(wù),如阿里云OSS,并且需要給registry加上登錄驗(yàn)證,以及一些權(quán)限的限制。

二、Docker搭建registry 私人倉(cāng)庫(kù)進(jìn)化版

使用docker-compose 來(lái)進(jìn)行部署,廢話不多說(shuō)直接來(lái)操作。
首先切換到/home 目錄(我一般是使用centos 7 , home目錄為基礎(chǔ)使用目錄,具體看個(gè)人)

  • 未結(jié)合OSS版
    在/home目錄創(chuàng)建一個(gè)registry目錄并進(jìn)入該目錄:
mkdir registry && cd registry

在當(dāng)前目錄創(chuàng)建docker-compose.yml:

registry:
  restart: always
  image: "registry:2.3"
  ports:
    - 5000:5000
  environment:
    - REGISTRY_AUTH=htpasswd
    - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
    - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
  volumes:
    - ./auth:/auth
    - ./data:/var/lib/registry

在啟動(dòng) Registry 服務(wù)時(shí),需要用到以下兩個(gè)目錄
(1)auth 目錄用于存放 docker login 時(shí)的賬號(hào)和密碼
(2)data 目錄用于存放 docker push 時(shí)上傳上來(lái)的文件
執(zhí)行以下命令新建這兩個(gè)目錄:

 mkdir auth && mkdir data

然后,創(chuàng)建一個(gè)測(cè)試賬號(hào)(用戶名: admin ,密碼: 123456 )并保存到 auth/htpasswd 中:

htpasswd -Bbn test 123456 > auth/htpasswd

最后就可以來(lái)啟動(dòng) Registry 服務(wù):

docker-compose up -d

docker ps 可以看到已經(jīng)run起來(lái)的容器:

[root@myali1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
26895a32e59a        registry:2.3        "/bin/registry /etc/d"   8 hours ago         Up 8 hours          0.0.0.0:5000->5000/tcp   registry_registry_1

簡(jiǎn)單示例 push 鏡像到私人倉(cāng)庫(kù)
執(zhí)行以下命令創(chuàng)建一個(gè)新鏡像:

docker tag docker.io/busybox  127.0.0.1:5000/test/busybox

說(shuō)明:鏡像名為 127.0.0.1:5000/test/busybox ,其中 127.0.0.1:5000 表示服務(wù)器地址, test/busybox 表示鏡像名。
上傳之前要先登錄:

docker login 127.0.0.1:5000

根據(jù)提示輸入賬號(hào)密碼或者一步到位:

docker login -u admin -p 123456 127.0.0.1:5000

登陸成功后,執(zhí)行以下命令即可上傳

docker push 127.0.0.1:5000/test/busybox

最后通過(guò)瀏覽器訪問(wèn) : http://ip:5000/v2/_catalog 會(huì)提示輸入賬號(hào)密碼,輸入賬號(hào)密碼之后你就可以看到剛剛push上來(lái)的鏡像。

{
     "repositories": [
        "test/busybox"
      ]
}
  • 結(jié)合阿里云 OSS
    將文件 docker-compose.yml 改為以下內(nèi)容:
registry:
  restart: always
  image: "registry:2.3"
  ports:
    - 5000:5000
  environment:
    - REGISTRY_AUTH=htpasswd
    - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
    - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    - REGISTRY_STORAGE=oss
    - REGISTRY_STORAGE_OSS_ACCESSKEYID=你的ACCESSKEYID
    - REGISTRY_STORAGE_OSS_ACCESSKEYSECRET=你的ACCESSKEYSECRET
    - REGISTRY_STORAGE_OSS_REGION=你的OSS所屬地域
    - REGISTRY_STORAGE_OSS_BUCKET=你的BUCKET名稱
    - REGISTRY_STORAGE_OSS_INTERNAL=false #是否走內(nèi)網(wǎng)
    - REGISTRY_STORAGE_OSS_SECURE=false
    - REGISTRY_STORAGE_DELETE_ENABLED=true
  volumes:
    - ./auth:/auth

說(shuō)明:由于使用阿里云 OSS 作為存儲(chǔ)引擎,所以不需要再將文件存儲(chǔ)到本地,因此將 volumes 中的 data 目錄配置去掉; environment 新增了一些配置參數(shù),需根據(jù)具體情況進(jìn)行修改
刪除 data 目錄和就鏡像并重新啟動(dòng)服務(wù):

 docker rm -fv registry_registry_1 && rm -Rf data && docker-compose up

重新push 鏡像然后去OSS控制臺(tái)查看鏡像是否正常存儲(chǔ)到OSS服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容