建立私有docker registry與基本設定
私有registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
非常有docker的style,registry本身也docker一下。不過我們跑私有就是要持久化,看一下image設定的內容是放在
- 儲存庫位置: /var/lib/registry
- 設定檔位置: /etc/docker/registry/config.yml
雖然上面指令小改一下就好,但是我都統一改用docker-compose
私有docker registry最小設定
只是可以跑起來的compose設定檔(docker-compose.yml)回憶: 啟動服務 docker-compose up -d
回憶: 關閉服務 docker-compose down
私有docker registry簡易設定
可登入的compose設定檔(docker-compose.yml)
- REGISTRY_HTTP_SECRET 自訂密碼鹽
- REGISTRY_AUTH表示驗證方式
- REGISTRY_AUTH_HTPASSWD_PATH指定驗證路徑
產生密碼檔
為了讓registry可登入最簡易就是用HTTP基本認證,為此我們需要產生htpasswd密碼,可以用htpasswd來處理,簡單用法如下
htpasswd -Bb {你的使用者} {你的密碼} > .htpasswd
- -B是bcrypt加密
- -b是從command line讀取密碼而不是要求輸入密碼。
- -n是不更動既有設定,在stdout螢幕輸出結果
- 另可用-C設定bcrypt加密次數,次數越多強度越強。
若是不想裝套件在本機的話,可以用docke借httpd的image跑一下
docker run --rm -it httpd htpasswd -Bbn {你的使用者} {你的密碼} > .htpasswd
提醒: -b這個選項其實有一個安全性疑慮,就是bash histroy會紀錄下你的指令,所以可以看到你的使用者密碼
私有docker registry的良好設定
前一個小節的簡易設定是設了HTTP的認證,建議是只提供自己或內部網路使用,對外服務至少得使用HTTPS的認證才是良好的設定。這部份請參考Miles大大的 使用 Private Registry 分享 image 一文。
登入私有docker registry
docker login localhost:5000
上傳到私有docker registry
平常會使用pull來抓docker image
docker pull ubuntu:18.04
但是我們並不能使用 push 上傳到私有registry,因為它會push到來源registry - https://docker.io/
docker push ubuntu:18.04
命名image
所以上傳前,要用tag命名一下待會要上傳的docker image放到私有registry的名稱
docker tag ubuntu:18.04 localhost:5000/ubuntu18
命名格式是
docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
回憶:看有哪些映像檔 docker images
上傳到私有registry
用上面的命名指令可以用以下指令上傳
$ docker push localhost:5000/ubuntu18
$ docker push localhost:5000/ubuntu18:latest
如果是命名有指定TAG$ docker tag ubuntu:18.04 localhost:5000/ubuntu:18.04
就用這條指令上傳
$ docker push localhost:5000/ubuntu18:latest
參考
- https://docs.docker.com/registry/deploying
- http://dockone.io/article/627
- https://philipzheng.gitbook.io/docker_practice/repository/local_repo
留言