使用docker-compose搭建私有docker registry


前言

docker hub注冊后只可以免費上傳一個鏡像,不過我們也可以使用其他免費docker倉庫,比如騰訊雲的免費docker倉庫,不受上傳限制。
當然我們也可以創建我們自己的私有倉庫,再也不用擔心上傳速度受到影響,並且也更加安全。

示例說明

  1. 使用的是win10自帶的docker
  2. 服務器使用的是centos系統
  3. 服務器ip地址以 182.61.60.219 為例(該IP只是示例,並不可用哦)
  4. 倉庫端口以8050為例
  5. 倉庫訪問端口以5000為例
  6. 倉庫UI訪問端口以5051為例
  7. 本地局域網地址以192.168.2.106為例

示例目錄

搭建私有registry

1.添加auth認證:

htpasswd加密方式 htpasswd命令是Apache的Web服務器內置工具,用於創建和更新儲存用戶名、域和用戶基本認證的密碼文件。

Reference

Use

  • docker run --entrypoint htpasswd registry -Bbn admin 123456 > ./auth/passwd // 新增用戶並創建加密文件(如果系統沒有安裝此命令,可以使用docker容器中的命令來實現)
  • 利用htpasswd命令添加用戶 htpasswd -bc htpasswd.user admin 123456
  • 在bin目錄下生成一個 htpasswd.user 文件,用戶名admin,密碼:123456,默認采用MD5加密方式。
  • 在原有密碼文件中增加下一個用戶 htpasswd -b htpasswd.user Jack 123456
  • 去掉-c選項,即可在第一個用戶之后添加第二個用戶,依此類推。
  • 利用htpasswd命令刪除用戶名和密碼 htpasswd -D htpasswd.user Jack
  • 利用htpasswd命令修改密碼 htpasswd -b htpasswd.user Jack 123456

2.Config

windows:

默認使用https,使用http需要注冊
修改daemon.json文件sudo vim /etc/docker/daemon.json
添加:{ "insecure-registries":["192.168.49.132:5000"]}
注: win10的配置在docker的設置里可以找到daemon配置選項

centos 系統

  • 在 /etc/docker/daemon.json 文件中寫入:
    {
        "registry-mirror": [
          "https://registry.docker-cn.com"
        ],
        "insecure-registries": [
          "[私有倉庫 ip:port]"
        ]
    }
  • 然后重啟 docker
    ystemctl restart docker

3.docker-compose.yaml

    version: '2.1'
        services:
          registry:
            image: registry
            container_name: my_registry
            volumes:
              - ./registry:/var/lib/registry
              - ./auth:/auth
            environment:
              - REGISTRY_AUTH=htpasswd
              - REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
              - REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
            restart: always
            privileged: true
            ports:
              - "8050:5000"

4.Login to docker:

docker login http://182.61.60.219:8050

5.Upload to docker:

docker tag hello-world 192.168.2.106:5000/hello-world  //設置標簽 加上倉庫地址前綴
docker push 192.168.2.106:5000/hello-world

6.View image

GET http://192.168.2.106:5000/v2/_catalog
GET http://192.168.2.106:5000/v2/image_name/tags/list

Reference

7. 可以配置UI來美化倉庫頁面

version: '2.1'
services:
  registry-ui:
    image: konradkleine/docker-registry-frontend:v2
    container_name: my_registry_ui
    restart: always
    privileged: true
    environment:
      - ENV_DOCKER_REGISTRY_HOST=182.61.60.219
      - ENV_DOCKER_REGISTRY_PORT=8050
    ports:
      - "8051:80"

總結

  1. 有時我們系統中沒有安裝某個命令時,可以使用鏡像中的命令來代替實現。
  2. 步驟7只是用來優化docker倉庫頁面的,如果不使用UI,那么只可以看到json格式的返回結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM