# 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

----

----

----
### 2. 位置與帳密
### 3. 試著pull image

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/)

{"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}]"}