Docker Registry 是一個用於存儲和分發 Docker 映像檔的服務器。它可以讓用戶自己託管映像檔,也可以從公共映像檔庫中拉取映像檔。在此提供一個基於 Docker Compose 的 Docker Registry 教學。
docker login
是 Docker CLI 提供的指令,可以讓你登入到 Docker registry 並建立認證憑證,以便你可以在該 registry 上 push 或 pull Docker image。docker login <registry>
其中 <registry>
是指你要登入的 Docker registry 的位置。例如,如果你要登入 Docker Hub,則 <registry>
不用填,
在課程中,我們用私有倉庫:https://docker-registry.3anology.info
。
docker logout <registry>
注意事項:
docker login
指令中加上 registry 的位置。image : node-red-test
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