逝者如斯夫

          靜而思之
          數(shù)據(jù)加載中……

          Docker Registry 安裝和運行

          使用場景

          • 內(nèi)部網(wǎng)絡(luò),無法訪問 Docker Hub
          • 控制 image 的存儲方式和存儲位置
          • 控制 image 的部署流程
          • 內(nèi)部開發(fā)流程需要集成控制 image 的部署和存儲

          應(yīng)用邏輯示意圖:

          ?

          安裝 Registry 服務(wù)

          概要

          Docker Registry 在 docker hub 的名稱是 registry。v1 版本的源碼地址 github.com/docker/docker-registry 已經(jīng)廢棄,v2 版本源碼地址在 github.com/docker/distribution,對應(yīng)的 API 是 Docker Registry HTTP API V2。

          以下安裝沒有使用 HTTPS 方式,啟用 HTTPS 相關(guān)的證書配置參考這個文檔:

          官方文檔參考:

          最簡安裝(啟動)

          docker run -d -p 5000:5000 --name registry registry:2
          

          以上命令未使用用戶名密碼登錄策略。

          啟用登錄密碼

          生成密碼

          登錄密碼可以通過 host 的文件傳入,以下命令調(diào)用容器的 htpasswd 命令生成密碼文件:

          mkdir auth
          docker run --entrypoint htpasswd registry:2 \
              -Bbn <USER_NAME> <PASSWORD> > auth/auth.htpasswd
          

          啟用密碼

          通過 –volume 參數(shù)傳入密碼文件:

          docker run -d -p 5000:5000 --restart=always --name registry \
            --volume `PWD`/auth:/auth \
            --env "REGISTRY_AUTH=htpasswd" \
            --env "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
            --env REGISTRY_AUTH_HTPASSWD_PATH=/auth/auth.htpasswd \
            registry:2
          

          修改鏡像存儲

          默認(rèn)鏡像數(shù)據(jù)存儲在 Docker Volume 中,可以通過 bind mount 進行修改,參數(shù)信息參考 Volume文檔。下面的例子將本機目錄 PWD/images 綁定到容器的 /var/lib/registry

          docker run -d -p 5000:5000 \
              --name auth-registry \
              -v `PWD`/images:/var/lib/registry \
              -e SQLALCHEMY_INDEX_DATABASE=sqlite:////opt/docker-image/docker-registry.db \
              -e STORAGE_PATH=/opt/docker-image \
              --restart=always \
              docker.onestch.com:5000/admin/registry:0.1
          

          默認(rèn)的存儲引擎為本地文件系統(tǒng),可以修改文件的存儲引擎為 Amazon S3 bucket、Google Cloud Platform 或其他引擎,可以通過配置 config.yml 的方式修改存儲配置,更多信息參考 Docker Registry 存儲配置文檔

          停止服務(wù)

          停止 registry 容器并清理運行數(shù)據(jù)

          docker stop registry && \
          docker rm -v registry
          

          驗證

          查看容器信息

          docker ps --no-trunc
          

          查看全部配置信息或部分信息

          docker inspect <CONTAINER_ID> 
          
          docker inspect <CONTAINER_ID> | grep -C3 -e "Volumes\":"
          docker inspect <CONTAINER_ID> | grep -C2 Binds
          docker inspect -f '{{ .Mounts }}' <CONTAINER_ID>
          

          查看映射的詳細(xì)信息

          docker volume inspect 4496b0a257b966052ef8d0743014a4f63fc9924251c8de0df0e9c70fde4c45e6
          

          發(fā)布鏡像

          登錄服務(wù)

          如果安裝(啟動)的 registry 服務(wù)需要登錄訪問時,執(zhí)行:

          docker login <REGISTRY_HOST>:<REGISTRY_PORT>
          

          輸入安裝時設(shè)定的用戶名密碼。

          目標(biāo)地址

          使用 docker tag 設(shè)定鏡像的目標(biāo)地址,鏡像的目標(biāo)地址包括三部分

          <HOST_NAME>[:<HOST_PORT>]/<IMAGE_NAME>:<IMAGE_VERSION>
          
          • HOST_NAME : HOST_PORT

            目標(biāo) registry 服務(wù)地址,缺省時使用官方 docker hub 的地址 registry-1.docker.io,且不允許包含下劃線

          • IMAGE_NAME 發(fā)布目標(biāo)鏡像名稱

          • IMAGE_VERSION 發(fā)布目標(biāo)鏡像版本

          例如:repo.company.com:3456/myapp:0.1

          發(fā)布鏡像

          發(fā)布的鏡像文件可以從 docker hub 中 Pull 或者本地使用 Dockerfile build 獲得

          Pull

          docker pull registry
          

          Build

          docker build -t docker.onestch.com:5000/admin/registry:0.1 .
          

          首先需要對鏡像 tag 設(shè)定目標(biāo)倉庫,如果 build 的時候已經(jīng)設(shè)置了目標(biāo)地址,可以不用進行 tag 操作

          docker tag registry:latest docker.onestch.com:5000/admin/registry:0.1
          

          然后 Push

          docker push docker.onestch.com:5000/admin/registry:0.1
          

          驗證

          重新從私有倉庫中獲取鏡像

          docker pull localhost:5000/admin/registry:0.1
          
          0.1: Pulling from admin/registry
          Digest: sha256:d738e358b6910d3a53c9c7ff7bbb5eac490ab7a9b12ffb4c1c27f2c53aae9275
          Status: Image is up to date for localhost:5000/admin/registry:0.1
          

          安裝 Registry UI

          選擇 registry ui,可選的有 atcol/docker-registry-ui、hyper/docker-registry-web、konradkleine/docker-registry-frontend

          安裝運行

          針對 hyper/docker-registry-web,使用 BASIC 認(rèn)證,未使用 HTTPS的情況

          docker run -it -p 8080:8080 \
              --rm \
              --name registry-web \
              --link auth-registry \
              -e REGISTRY_URL=http://auth-registry:5000/v2 \
              -e REGISTRY_AUTH_ENABLED=false \
              -e REGISTRY_BASIC_AUTH=YWRtaW46MTIzNDU2 \
              -e REGISTRY_NAME=docker.onestch.com:5000 hyper/docker-registry-web
          

          命令中 auth-registry 是自定的 registry 鏡像。

          使用 HTTPS 時需要傳入 /config/auth.key 文件,或自定義 config.xml 配置,例如:
          docker run -it -p 8080:8080 –name registry-web \
          –link auth-registry \
          -v $(pwd)/config.yml:/conf/config.yml:ro \
          hyper/docker-registry-web

          管理界面

          建立了 registry 服務(wù)后,對 registry 的管理界面在本機的訪問地址是http://localhost:8080,一般 ui 服務(wù)會和 registry 服務(wù)同樣運行在私有網(wǎng)絡(luò),所以我們可以發(fā)布 registry ui 到 registry 服務(wù)器再運行。

          docker tag docker.io/hyper/docker-registry-web docker.onestch.com:5000/admin/docker-registry-web
          
          docker push docker.onestch.com:5000/admin/docker-registry-web
          

          查看 UI 界面如下圖

          ?

          posted on 2018-08-03 11:49 ideame 閱讀(1306) 評論(0)  編輯  收藏 所屬分類: Configuration 、Script

          主站蜘蛛池模板: 新昌县| 乌鲁木齐市| 江孜县| 横峰县| 丽水市| 太保市| 平潭县| 常宁市| 唐山市| 武宁县| 万宁市| 平昌县| 贵定县| 麻江县| 红原县| 黎平县| 富民县| 长阳| 桐梓县| 平武县| 安庆市| 武强县| 腾冲县| 安乡县| 成安县| 万山特区| 惠州市| 东光县| 潞西市| 兰西县| 治多县| 固镇县| 崇州市| 大城县| 兰溪市| 罗定市| 清镇市| 温泉县| 隆化县| 屏东县| 黔东|