Cài đặt và sử dụng Local Private Docker Registry

Cài đặt và sử dụng Local Private Docker Registry

Docker Registry là gì?

Docker registry là nơi chứa các image trong quá trình khởi động các container. Khi sử dụng câu lệnh docker pull để pull image về tức là chúng ta kết nối đến Docker hub chính thức. Ở đó bạn có thể tạo và lưu trữ image cho mình nhưng nếu không trả phí bạn phải public image của bạn. Nếu muốn lưu trữ Docker image sử dụng nội bộ chúng ta phải triển khải Docker Registry cho riêng mình. Bài viết này sẽ hướng dẫn các bạn tạo và sử dụng Private Docker Registry trên Localhost.

Xem thêm:

Docker là gì?

Sử dụng Docker như thế nào?

Truyền lệnh từ Host vào Docker Container

Sử dụng Docker: Export/Import, Save/Load Container

Sử dụng Docker: Dockerfile

Tạo và sử dụng Docker Registry

Cài đặt Docker Registry và Web UI

Để cài đặt Docker Registry, trước hết phải cài đặt Docker cho server, nếu chưa cài đặt bạn có thể xem hướng dẫn tại đây

Cài đặt Docker Registry

Cài đặt Docker Registry v2 bằng lệnh sau:

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

Trong đó

  • registry-srv -> tên container.
  • -p 5000:5000 -> map port 5000 của host và container
  • –restart=always -> luôn luôn bật container
  • registry:2 -> tên image

Cài đặt Web UI cho Registry

Trước khi cài đặt Web UI chúng ta tạo file config bằng cách sau:

mkdir -p /opt/conf

cd  /opt/conf

nano config.yml

Thêm nội dung file như sau:

registry:
   # Docker registry url
   url: http://registry-srv:5000/v2
   # Docker registry fqdn
   name: localhost:5000
   # To allow image delete, should be false
   readonly: false
   auth:
   # Disable authentication
   enabled: false

Trong đó

  • readonly: false -> cho phép xóa image
  • enabled: false -> không cần login registry

Cài đặt Web UI cho Registry bằng lệnh sau:

docker run -it -p 8080:8080 --restart=always --name registry-web --link registry-srv -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web

Trong đó

  • registry-web -> tên container.
  • -p 8080:8080 -> map port 8080của host và container
  • –restart=always -> luôn luôn bật container
  • –link registry-srv -> liên kết với docker registry container đã tạo ở trên
  • hyper/docker-registry-web -> tên image

Sau khi cài đặt xong các bạn truy cập vào Registry Server theo đường dẫn http://IP:8080 Kết quả trả về như sau là cài đặt thành công.

Sử dụng

Để kiểm tra Docker registry hoạt động hay không, từ một máy client bất kì đã cài docker, ta tiến hành test như sau:

Pull Centos Image

[root@localhost ~]# docker pull centos:latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
aeb7866da422: Pull complete
Digest: sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b
Status: Downloaded newer image for docker.io/centos:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 75835a67d134 33 hours ago 200 MB
[root@localhost ~]#

Tạo image tag cho registry

 docker image tag centos 192.168.1.93:5000/centos:latest

Push image lên Docker Registry

Với môi trường Localhost chúng ta sẽ gặp lỗi security về https như sau:

[root@localhost ~]# docker push 192.168.1.93:5000/centos:latest
The push refers to a repository [192.168.1.93:5000/centos]
Get https://192.168.1.93:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Để fix lỗi trên, có 2 trường hợp

  • Đối với docker-io bạn chỉnh sửa file /etc/docker/daemon.json và thêm vào dòng { “insecure-registries”:[“192.168.1.93:5000”] }
  • Đối với docker ce: chỉnh sửa file /usr/lib/systemd/system/docker.service. Tìm đến dòng ExecStart=/usr/bin/dockerd
    thay thế bằng ExecStart=/usr/bin/dockerd –insecure-registry 192.168.1.93:5000 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  • Sau đó thực thi lệnh systemctl daemon-reloadsystemctl restart docker  để khởi động lại docker

Tiến hành push image sau khi fix lỗi https

[root@localhost ~]# docker push 192.168.1.93:5000/centos:latest
The push refers to a repository [192.168.1.93:5000/centos]
f972d139738d: Pushed
latest: digest: sha256:dc29e2bcceac52af0f01300402f5e756cc8c44a310867f6b94f5f7271d4f3fec size: 529

Refresh lại Web UI nếu kết quả như bên dưới là thành công

Pull thử image vừa push

[root@localhost ~]# docker pull 192.168.1.93:5000/centos:latest
Trying to pull repository 192.168.1.93:5000/centos ...
latest: Pulling from 192.168.1.93:5000/centos
aeb7866da422: Pull complete
Digest: sha256:dc29e2bcceac52af0f01300402f5e756cc8c44a310867f6b94f5f7271d4f3fec
Status: Downloaded newer image for 192.168.1.93:5000/centos:latest

Trên đây là cách đơn giản để Tạo và sử dụng Docker Registry trong môi trường localhost phục vu học tập, nghiên cứu cũng như làm việc. Chúc các bạn thành công.

Nguồn: https://hub.docker.com/r/hyper/docker-registry-web/