- vừa được xem lúc

Set up private docker registry

0 0 53

Người đăng: LDT

Theo Viblo Asia

Bài toán: Mình cần 1 repository để lưu trữ Docker Images của mỗi lần build.

Tại sao phải cài đặt repository riêng, trong khi mình có thể dùng khá nhiều repos có sẵn như Docker Hub... -> Docker hub chỉ cho duy nhất 1 private repos, còn lại sẽ mất phí hoặc phải để public. tham khảo ở đây ([Docker Hub])(https://www.docker.com/pricing)

Thử google phát ra luôn trang hướng dẫn chính thống Guide Nếu dùng được luôn thì chắc mình cũng không mấy hôm loay hoay.

Phân tích chút, theo hướng dẫn chạy 1 lệnh là xong

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Chạy thử, thấy ok luôn, nó tạo sẵn cho mình 1 container, có thể push image lên đây, nhìn có vẻ ổn. nhưng lưu ý, nó chỉ là Local Registry chỉ dùng trong local máy chạy registry này (Rõ ràng không thấy thông tin của username, password). -> Không đáp ứng được nhu cầu, vì mình cần build ở 1 máy khác, và chạy ở 1 máy khác nữa.

Không thể lười được nữa, tiếp tục đọc đoạn sau của hướng dẫn. Đây cũng có vẻ đúng như cái mình muốn, Có username, password và đặc biệt nó yêu cầu thêm certificate. Mình gặp vấn đề ngay ở step 1: docker run \ --entrypoint htpasswd \ registry:2 -Bbn testuser testpassword > auth/htpasswd gặp lỗi, như thế này.

<pre>docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused &quot;exec: \&quot;htpasswd\&quot;: executable file not found in $PATH&quot;: unknown. <font color="#CC0000">ERRO</font>[0000] error waiting for container: context canceled</pre>

Theo mình hiểu thì trong thằng registry:2 phải có lệnh htpasswd. không rõ lỗi ở đâu, nhưng vẫn có vượt qua được. Mình Google ra được 1 trang tạo htpasswd online . lưu kết qủa vào. thế là xong step 1.

Đến bước 3, hướng dẫn không nói rõ lấy file domain.crt, domain.key thế nào, người mới đến bước này thì chịu. Như lúc đầu mình lười bỏ đoạn dùng certs đi, chạy vẫn được. Nhưng đến lúc login từ máy khác thì bị lỗi. X509 errors: X509 errors usually indicate that you are attempting to use a self-signed certificate without configuring the Docker daemon correctly

Khi đó muốn pass được thì lại phải config ở các máy client run ở chế độ insecure, nó mất thời gian

Muốn lười cũng không được, mình quen việc sử dụng Let'Encrypt để lấy certificate. MÌnh hay thao tác trên CentOS nên dùng theo hướng dẫn này.

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-centos-7

Để lấy certificate. Nhưng Let'Encrypt nó tạo ra nhiều file hơn mình mong muốn

privkey.pem -> domain.key fullchain.pem -> domain.crt

Mình sẽ viết 1 bài chi tiết về cách tạo certificate từ let'encrypt

Ngoài ra các bạn có thể sử dụng file docker compose của mình để dùng

Trong này mình có sử dụng biến môi trường $REGISTRY_HOME cho gọn

export REGISTRY_HOME=/srv/registry
version: '3.3'
services: registry: ports: - '5000:5000' restart: always container_name: registry volumes: - '$REGISTRY_HOME/auth:/auth' - '$REGISTRY_HOME/certs:/certs' - '$REGISTRY_HOME/registry:/var/lib/registry' environment: - REGISTRY_AUTH=htpasswd - 'REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm' - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt - REGISTRY_HTTP_TLS_KEY=/certs/domain.key image: 'registry:2' 

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 80

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 89

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 65

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 53

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 106