1. 程式人生 > >docker-2 docker搭建帶有訪問認證的私有倉庫(轉)

docker-2 docker搭建帶有訪問認證的私有倉庫(轉)

本文章為轉載

以下步驟均為本人親自踩坑,歷經數次失敗,最終搭建成功 
一、環境資訊: 
作業系統:CentOS 7 
Docker版本:1.12.5 (更高版本應該類似) 
registry:2.4.1 
registry-web: hyper/docker-registry-web:latest 
二、搭建步驟: 
1、拉取映象registry(倉庫)和registry-web(用於訪問倉庫的UI介面):

  1. docker pull hyper/docker-registry-web
  2. docker pull registry:2.4.1


2、下載docker-compose(一種簡化複雜容器應用的利器,具體使用可參見官網) 
官網下載連結:https://docs.docker.com/compose/install/ 
懶人可以直接使用下面的命令即可下載

  1. curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose


下載完成後更改docker-compose的許可權:

  1. chmod 755 /usr/local/bin/docker-compose


3、建立幾個目錄,用於存放配置檔案和作為私有倉庫的映象儲存目錄

  1. mkdir -p /data/registry_dir/conf/registry   #存放倉庫的配置資訊
  2. mkdir -p /data/registry_dir/conf/registry-web #存放倉庫UI介面的配置資訊
  3. mkdir -p /data/registry_dir/registry  #存放倉庫的映象
  4. mkdir -p /data/registry_dir/db  #倉庫的訪問資訊


4、生成證書

  1. openssl req -new -newkey rsa:4096 -days 365 \
  2.                 -subj "/CN=localhost" \
  3.                 -nodes -x509  \
  4.                 -keyout /data/registry_dir/conf/registry-web/auth.key \
  5.                 -out /data/registry_dir/conf/registry/auth.cert


5、建立yml配置檔案 
###建立倉庫的配置檔案 
vim /data/registry_dir/conf/registry/config.yml

  1. version: 0.1
  2. storage:
  3.   filesystem:
  4.     rootdirectory: /var/lib/registry
  5. http:
  6.   addr: 0.0.0.0:5000
  7. auth:
  8.   token:
  9.     realm: http://localhost:8080/api/auth
  10.     service: localhost:5000
  11.     issuer: 'admin'
  12.     rootcertbundle: /etc/docker/registry/auth.cert


###建立倉庫UI的配置檔案 
vim /data/registry_dir/conf/registry-web/config.yml

  1. registry:
  2.     url: http://registry-srv:5000/v2
  3.     name: localhost:5000
  4.     readonly: false
  5.     auth:
  6.         enabled: true
  7.         issuer: 'admin'
  8.         key: /conf/auth.key


###建立docker-compose啟動配置檔案 
vim /data/registry_dir/docker-compose.yml

  1. version: '2'
  2. services:
  3.   registry-web:
  4.     image: hyper/docker-registry-web:latest
  5.       ports:
  6.         - 8080:8080
  7.       volumes:
  8.          - /data/registry_dir/conf/registry-web:/conf:ro
  9.          - /data/registry_dir/db:/data
  10.      networks:
  11.        - registry-net
  12.      depends_on:
  13.         - registry
  14.      restart: always
  15. registry:
  16.   image: registry:2.4.1
  17.   ports:
  18.     - 5000:5000
  19.   volumes:
  20.     - /data/registry_dir/conf/registry:/etc/docker/registry:ro
  21.     - /data/registry_dir/registry:/var/lib/registry
  22.   environment:
  23.     - REGISTRY_STORAGE_DELETE_ENABLED=true
  24.   networks:
  25.     - registry-net
  26.   restart: always
  27. networks:
  28.   registry-net:
  29.   #driver: default


6、啟動容器

docker-compose up -d
1
搭建完成,檢視映象執行情況:docker ps | grep registry 
正常執行的話,接下來就可以愉快的訪問你的映象倉庫了,開啟瀏覽器,輸入localhost:8080(從其他機器訪問該倉庫的話,輸入ip:port的方式就可以)預設使用者名稱密碼是admin/admin 


也可以從後臺驗證配置是否準確:

docker login localhost:5000
1
輸入正確的使用者密碼會提示: 


如果密碼錯,則會提示: 


至此,帶有訪問認證的docker私有倉庫搭建完畢,也可參考官網通過docker run的方式, 
連結:https://hub.docker.com/r/hyper/docker-registry-web/

另外需注意,首次向倉庫push映象時會提示許可權問題,需要登入web給admin使用者分配一下許可權。