# Docker-registry --- ## Docker-registry Docker Registry 是一個用於存儲和分發 Docker 映像檔的服務器。它可以讓用戶自己託管映像檔,也可以從公共映像檔庫中拉取映像檔。在此提供一個基於 Docker Compose 的 Docker Registry 教學。 --- ## Docker login - `docker login` 是 Docker CLI 提供的指令,可以讓你登入到 Docker registry 並建立認證憑證,以便你可以在該 registry 上 push 或 pull Docker image。 ---- 1. 在你的終端機上,執行以下指令: ```bash= docker login <registry> ``` 其中 `<registry>` 是指你要登入的 Docker registry 的位置。例如,如果你要登入 Docker Hub,則 `<registry>` 不用填, 在課程中,我們用私有倉庫:`https://docker-registry.3anology.info`。 ---- 1. 當你執行完上面的指令後,你會被提示輸入你的使用者名稱和密碼。輸入正確的認證資訊後,你就成功登入了該 Docker registry。 2. 如果你要登出已經登入的 registry,可以執行以下指令: ```bash= docker logout <registry> ``` ---- 注意事項: - 如果你使用的是私有的 Docker registry,請記得在 `docker login` 指令中加上 registry 的位置。 - 如果你使用的是 Docker Hub,請注意每個帳號每天只有 100 次的 pull 限制,但是 push 沒有限制。如果需要更多的 pull 次數,可以升級到付費帳戶。 --- ## Portainer 使用 Docker-registry ---- ### 1. 註冊Docker-registry ![](https://i.imgur.com/HdMN4El.png) ---- ![](https://i.imgur.com/XZSxAmF.png) ---- ![](https://i.imgur.com/eSHRIZ6.png) ---- ### 2. 位置與帳密 ### 3. 試著pull image ![](https://i.imgur.com/3OOnvr7.png) image : node-red-test --- ## 建立 Docker-registry ---- ### 1. Docker compose ```yaml= version: '3' services: registry: # 容器名稱為 registry image: registry:2 # 使用 registry:2 的映像檔 ports: - "15000:5000" # 將容器內部的 5000 Port 對應到主機的 15000 Port volumes: - /volume1/docker/docker-registry/data:/var/lib/registry # 掛載主機上的 /volume1/docker/docker-registry/data 目錄到容器內的 /var/lib/registry 目錄 - /volume1/docker/docker-registry/config:/auth # 掛載主機上的 /volume1/docker/docker-registry/config 目錄到容器內的 /auth 目錄 environment: REGISTRY_AUTH: htpasswd # 啟用 htpasswd 的驗證方式 REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd # 指定驗證檔案為容器內的 /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm # 設定驗證領域為 Registry Realm htpasswd: # 容器名稱為 htpasswd image: xmartlabs/htpasswd # 使用 xmartlabs/htpasswd 的映像檔 command: -Bbn 3anology hNhHrGxzbXL4 # 執行 htpasswd 指令,建立名稱為 3anology 密碼為 hNhHrGxzbXL4 的使用者帳號 volumes: - /volume1/docker/docker-registry/auth:/config # 掛載主機上的 /volume1/docker/docker-registry/auth 目錄到容器內的 /config 目錄 environment: HTPASSWD_FILE: /config/htpasswd # 指定 htpasswd 檔案為容器內的 /config/htpasswd HTPASSWD_USERNAME: 3anology # 設定帳號名稱為 3anology HTPASSWD_PASSWORD: hNhHrGxzbXL4 # 設定帳號密碼為 hNhHrGxzbXL4 ``` ---- ### 2. 使用線上版htpasswd [產生器](https://zh-tw.rakko.tools/tools/20/) ![](https://i.imgur.com/GTOlEqQ.png)
{"metaMigratedAt":"2023-06-18T01:49:02.530Z","metaMigratedFrom":"YAML","title":"Docker-registry","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"spotlight\":{\"enabled\":false}}","contributors":"[{\"id\":\"388c4bf6-8beb-45c5-8632-2fb50296a8c5\",\"add\":2869,\"del\":223}]"}
    286 views