Tạo Registry riêng
Nếu muốn tạo một kho chứa các Image riêng, bạn có thể cập nhật, lấy về các Image từ đó thì có thể sử dụng image registry:2.
Các thông tin chính của registry:
- Cổng dịch vụ
5000
- Phiên bản có thể dùng:
registry:2.7
- Dữ liệu lưu tại
/var/lib/registry
(biết để muốn ánh xạ đĩa)
Giả sử máy host đang có địa chỉ IP là 127.0.0.1
, cài đặt để Docker truy cập được đến kho ở địa chỉ 127.0.0.1:5000
,
có thiết lập để lưu dữ liệu cố định ở máy host /home/registry/
(nếu chưa có bạn tạo thư mục này trước).
docker run -p 5000:5000 -v /home/registry:/var/lib/registry registry:2.7
Khi container này chạy, địa chỉ để Docker truy cập là 127.0.0.1:5000
, ở môi trường thực thế Docker cần kết nối an toàn đến kho chứa
với giao thức https (ssl), tuy nhiên để thiết lập Docker chấp nhận kết nối kém an toàn đến kho chứa này thiết lập như sau:
Mở phần thiết lập của Docker Destop ra, thiết lập ở mục Daemon > Advanced có dòng:
"insecure-registries" : ["127.0.0.1:5000"]
Sau đó khởi động lại Docker
Hoặc trong hệ thông Linux biên tập file /etc/docker/daemon.json
có nội dung sau, rồi khởi động lại:
{ "insecure-registries" : ["127.0.0.1:5000"] }
Push / Pull từ Registry riêng
Để đẩy một Image đang có ở máy local lên kho riêng có địa chỉ 127.0.0.1:5000
(nếu dùng tên miền thì yourdomain.com:5000
) thì
cần đặt tên Image phần tên có chứa địa chỉ ở đầu với cấu trúc như sau: addr/nameimage:tag
với addr là địa chỉ kho.
Giờ hãy pull một Image từ hub.docker.com về (hoặc nếu thích thì build riêng một image), giả sử pull về busybox:latest
docker pull busybox:latest
Sau khi lấy về nó có ID là af2f74c517aa
Đổi tên image này thành tên 127.0.0.1:5000/mybusybox:v1
docker tag af2f74c517aa 127.0.0.1:5000/mybusybox:v1
Với cách đặt tên như vậy, nếu dùng lệnh docker push nó sẽ đẩy lên kho chứa có địa chỉ 127.0.0.1:5000
là kho chứa của bạn:
docker push 127.0.0.1:5000/mybusybox:v1
Sau lệnh này thì khó chứa đã có image với tên đầy đủ 127.0.0.1:5000/mybusybox:v1
, bất kỳ lúc nào có thể tải lại bằng lệnh pull
docker pull 127.0.0.1:5000/mybusybox:v1