Nếu bạn đang làm việc cho một tổ chức và muốn giữ hình ảnh Docker của mình tại chỗ để triển khai nhanh chóng, thì việc lưu trữ kho lưu trữ Docker riêng là hoàn hảo. Có sổ đăng ký Docker riêng cho phép bạn sở hữu đường ống phân phối hình ảnh của mình và kiểm soát chặt chẽ hơn đối với việc lưu trữ và phân phối hình ảnh. Bạn có thể tích hợp sổ đăng ký của mình với hệ thống CI/CD để cải thiện quy trình làm việc của mình.
Hướng dẫn này sẽ hướng dẫn bạn cách thiết lập và sử dụng sổ đăng ký Docker riêng trên máy chủ Ubuntu 22.04 bằng cách sử dụng Amazon S3 làm vị trí lưu trữ.
[*]
Một số gói mà hệ thống của bạn nhu cầu.
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.
Kiểm tra xem tường lửa có đang chạy không.
Bạn sẽ nhận được thông báo sau đầu ra.
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Cho phép các cổng HTTP và HTTPS như tốt.
Bật Tường lửa
Kiểm tra trạng thái của tường lửa một lần nữa.
Bạn sẽ thấy kết quả tương tự.
Ubuntu 22.04 đi kèm với phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy nhập khóa GPG của Docker.
Tạo tệp kho lưu trữ Docker.
Cập nhật kho lưu trữ hệ thống danh sách.
Cài đặt phiên bản Docker mới nhất.
Xác minh rằng đó là đang chạy.
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng
Bạn sẽ cần phải đăng xuất khỏi máy chủ và đăng nhập lại với cùng một người dùng để kích hoạt thay đổi này hoặc sử dụng lệnh sau lệnh.
Xác nhận rằng người dùng của bạn đã được thêm vào nhóm Docker.
Chuyển sang thư mục
Tạo thư mục để lưu trữ mật khẩu xác thực HTTP, tệp cấu hình Nginx và SSL chứng chỉ.
Tạo một thư mục khác để lưu trữ nhật ký Nginx.
Bước tiếp theo là thiết lập tệp cấu hình với một số cài đặt quan trọng. Các cài đặt này cũng có thể được xác định trong tệp
Tạo một bucket với các cài đặt sau.
Thay thế
Ghi lại khóa bí mật, giá trị bí mật và vùng thùng của thùng để sử dụng sau.
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Chúng ta hãy xem qua những gì chúng ta đã thiết lập trong tệp compose của mình.
Docker registry giao tiếp qua cổng 5000, đây là cổng mà chúng tôi đã đưa ra trên máy chủ của mình với docker.
[*]
[*]
[*]
[*]
Thiết lập của sổ đăng ký Docker được lưu trữ trong tệp
Tạo tệp mật khẩu trong
Cờ
Nếu bạn muốn thêm nhiều người dùng hơn, hãy chạy lại lệnh nhưng không có
Bây giờ, tệp sẽ được ánh xạ tới vùng chứa sổ đăng ký để xác thực.
Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Chạy lệnh sau để tạo SSL Chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Bạn sẽ tìm thấy
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Tạo và mở tệp
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Khởi chạy container docker.
Kiểm tra trạng thái của container.
Đăng nhập vào sổ đăng ký Docker.
Bạn sẽ nhận được thông tin sau đầu ra.
Bạn cũng có thể mở URL
Bạn có thể kiểm tra URL trên thiết bị đầu cuối bằng cách sử dụng
Tải xuống Ubuntu docker mới nhất hình ảnh.
Gắn thẻ hình ảnh này cho sổ đăng ký riêng tư.
Đẩy hình ảnh vào đăng ký.
Kiểm tra xem việc đẩy có thành công không.
Nhập mật khẩu xác thực Nginx của bạn khi được nhắc và bạn sẽ thấy danh sách các kho lưu trữ có sẵn thông qua sổ đăng ký.
Đăng xuất bằng thiết bị đầu cuối để xóa credentials.
Kiểm tra danh sách hình ảnh Docker hiện có thể sử dụng.
Đăng nhập vào sổ đăng ký Docker riêng từ máy khách.
Kéo ảnh Ubuntu từ sổ đăng ký.
Liệt kê tất cả ảnh trên máy khách của bạn máy.
Tạo và khởi chạy một container bằng cách sử dụng hình ảnh đã tải xuống.
Bạn sẽ được đăng nhập vào Shell bên trong Ubuntu container.
Chạy lệnh sau để kiểm tra phiên bản Linux.
Bây giờ, bạn có thể bắt đầu sử dụng sổ đăng ký Docker từ máy khách của mình.
Hướng dẫn này sẽ hướng dẫn bạn cách thiết lập và sử dụng sổ đăng ký Docker riêng trên máy chủ Ubuntu 22.04 bằng cách sử dụng Amazon S3 làm vị trí lưu trữ.
Điều kiện tiên quyết
-
Hai máy chủ Linux chạy Ubuntu 22.04. Một máy chủ sẽ hoạt động như máy chủ lưu trữ sổ đăng ký, trong khi máy chủ còn lại sẽ được sử dụng như máy khách để gửi yêu cầu và nhận hình ảnh từ máy chủ.
-
Tên miền đã đăng ký trỏ đến máy chủ lưu trữ. Chúng tôi sẽ sử dụngregistry.example.com
cho hướng dẫn của mình.
-
Người dùng không phải root có quyền sudo trên cả hai máy.
-
Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
Một số gói mà hệ thống của bạn nhu cầu.
Mã:
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Ubuntu mặc định có ufw (Uncomplicated Firewall).Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Mã:
Status: inactive
Mã:
$ sudo ufw allow OpenSSH
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Mã:
$ sudo ufw status
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Bước 2 - Cài đặt Docker và Docker Compose
Bước này là bắt buộc trên cả máy chủ và máy khách.Ubuntu 22.04 đi kèm với phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy nhập khóa GPG của Docker.
Mã:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Mã:
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Mã:
$ sudo apt update
Mã:
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Mã:
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-04-13 09:37:09 UTC; 3min 47s ago
TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 2106 (dockerd) Tasks: 7 Memory: 26.0M CPU: 267ms CGroup: /system.slice/docker.service ??2106 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
sudo
mỗi khi bạn chạy lệnh docker
, hãy thêm tên người dùng của bạn vào docker
nhóm.
Mã:
$ sudo usermod -aG docker $(whoami)
Mã:
$ su - ${USER}
Mã:
$ groups
navjot wheel docker
Bước 3 - Cấu hình Docker Registry
Tạo thư mục người dùng
Tạo thư mục cho sổ đăng ký cấu hình.
Mã:
$ mkdir ~/docker-registry
docker-registry
.
Mã:
$ cd ~/docker-registry
Mã:
$ mkdir auth
Mã:
$ mkdir logs
Tạo Amazon S3 Bucket
Bạn có thể lưu trữ dữ liệu sổ đăng ký và hình ảnh trên máy chủ của mình hoặc sử dụng dịch vụ lưu trữ đám mây. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng dịch vụ đám mây Amazon S3.Bước tiếp theo là thiết lập tệp cấu hình với một số cài đặt quan trọng. Các cài đặt này cũng có thể được xác định trong tệp
docker-compose.yml
, nhưng có một tệp riêng sẽ tốt hơn nhiều.Tạo một bucket với các cài đặt sau.
- ACL phải bị vô hiệu hóa.
- Quyền truy cập công khai vào bucket phải bị vô hiệu hóa.
- Phiên bản bucket phải bị vô hiệu hóa.
- Bật mã hóa Bucket bằng khóa do Amazon S3 quản lý. (SSE-S3)
- Khóa đối tượng phải bị vô hiệu hóa.
Mã:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::S3_BUCKET_NAME" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*" } ]
}
S3_BUCKET_NAME
bằng tên thùng S3 của bạn.Ghi lại khóa bí mật, giá trị bí mật và vùng thùng của thùng để sử dụng sau.
Tạo tệp Docker Compose
Tạo tệpdocker-compose.yml
và mở tệp để chỉnh sửa.
Mã:
$ nano docker-compose.yml
Mã:
services: registry: image: registry:2 restart: always environment: - REGISTRY_STORAGE=s3 - REGISTRY_STORAGE_S3_REGION=us-west-2 - REGISTRY_STORAGE_S3_BUCKET=hf-docker-registry - REGISTRY_STORAGE_S3_ENCRYPT=true - REGISTRY_STORAGE_S3_CHUNKSIZE=5242880 - REGISTRY_STORAGE_S3_SECURE=true - REGISTRY_STORAGE_S3_ACCESSKEY=AKIA3FIG4NVFNXKQXMSJ - REGISTRY_STORAGE_S3_SECRETKEY=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 - REGISTRY_STORAGE_S3_V4AUTH=true - REGISTRY_STORAGE_S3_ROOTDIRECTORY=/image-registry - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory - REGISTRY_HEALTH_STORAGEDRIVER_ENABLED=false nginx: image: "nginx:alpine" ports: - 443:443 links: - registry:registry volumes: - ./auth:/etc/nginx/conf.d - ./auth/nginx.conf:/etc/nginx/nginx.conf:ro - ./logs:/var/log/nginx - /etc/letsencrypt:/etc/letsencrypt
Chúng ta hãy xem qua những gì chúng ta đã thiết lập trong tệp compose của mình.
-
Bước đầu tiên là lấy hình ảnh mới nhất của phiên bản 2 của sổ đăng ký Docker từ trung tâm. Chúng tôi không sử dụng thẻ mới nhất vì nó có thể gây ra sự cố trong trường hợp nâng cấp phiên bản lớn. Đặt thành 2 cho phép bạn lấy tất cả các bản cập nhật 2.x trong khi ngăn chặn việc tự động nâng cấp lên phiên bản chính tiếp theo, điều này có thể gây ra những thay đổi đột ngột.
-
Bộ chứa sổ đăng ký được thiết lập để luôn khởi động lại trong trường hợp xảy ra lỗi hoặc tắt máy đột ngột.
-
Chúng tôi đã thiết lập nhiều biến môi trường khác nhau cho bộ lưu trữ Amazon S3. Chúng ta hãy cùng xem qua chúng một cách nhanh chóng.
- REGISTRY_STORAGE thiết lập loại lưu trữ. Chúng tôi đã chọn s3 vì chúng tôi đang sử dụng Amazon S3.
- REGISTRY_STORAGE_S3_REGION thiết lập vùng của thùng S3 của bạn.
- REGISTRY_STORAGE_S3_BUCKET thiết lập tên của thùng S3 của bạn.
- REGISTRY_STORAGE_S3_ENCRYPT - thiết lập thành true nếu bạn đã bật mã hóa Thùng.
- REGISTRY_STORAGE_S3_CHUNKSIZE thiết lập kích thước của các khối tải lên. Kích thước phải lớn hơn 5MB (5 * 1024 * 1024).
- REGISTRY_STORAGE_S3_SECURE - đặt thành true nếu bạn định sử dụng HTTPS.
- REGISTRY_STORAGE_S3_ACCESSKEY và REGISTRY_STORAGE_S3_SECRETKEY - Thông tin xác thực người dùng bạn đã lấy sau khi tạo người dùng IAM.
- REGISTRY_STORAGE_S3_V4AUTH - đặt thành true nếu bạn sử dụng xác thực AWS v4. Nếu bạn gặp lỗi liên quan đến đăng nhập S3, hãy đặt thành false.
- REGISTRY_STORAGE_S3_ROOTDIRECTORY - đặt thư mục gốc trong thùng của bạn, nơi dữ liệu sổ đăng ký của bạn sẽ được lưu trữ.
- REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR - đặt vị trí cho Bộ nhớ đệm. Trong trường hợp của chúng tôi, chúng tôi đang lưu trữ nó trong bộ nhớ. Bạn cũng có thể đặt nó để sử dụng Redis.
- REGISTRY_HEALTH_STORAGEDRIVER_ENABLED - Đặt thành false để tắt dịch vụ kiểm tra tình trạng lưu trữ của Sổ đăng ký. Có một lỗi với Registry có thể gây ra sự cố nếu bạn không đặt thành false.
Docker registry giao tiếp qua cổng 5000, đây là cổng mà chúng tôi đã đưa ra trên máy chủ của mình với docker.
[*]
./auth:/etc/nginx/conf.d
ánh xạ đảm bảo rằng tất cả các thiết lập của Nginx đều có sẵn trong container.[*]
./auth/nginx.conf:/etc/nginx/nginx.conf:ro
ánh xạ tệp cài đặt Nginx từ hệ thống sang tệp trong container ở chế độ chỉ đọc.[*]
./logs:/var/log/nginx
cho phép truy cập vào nhật ký của Nginx trên hệ thống bằng cách ánh xạ vào thư mục nhật ký Nginx trong container.[*]
Thiết lập của sổ đăng ký Docker được lưu trữ trong tệp
/etc/docker/registry/config.yml
trong vùng chứa và chúng tôi đã ánh xạ tệp này tới tệp config.yml
trong thư mục hiện tại, chúng tôi sẽ tạo tệp này ở bước tiếp theo.Thiết lập xác thực
Để thiết lập xác thực HTTP, bạn cần để cài đặt góihttpd-tools
.
Mã:
$ sudo apt install apache2-utils -y
~/docker-registry/auth
thư mục.
Mã:
$ htpasswd -Bc ~/docker-registry/auth/nginx.htpasswd user1
New password:
Re-type new password:
Adding password for user user1
-c
hướng dẫn lệnh tạo tệp mới và cờ -B
dùng để sử dụng thuật toán bcrypt được Docker hỗ trợ. Thay thế user1
bằng tên người dùng bạn chọn.Nếu bạn muốn thêm nhiều người dùng hơn, hãy chạy lại lệnh nhưng không có
-c
flag.
Mã:
$ htpasswd -B ~/docker-registry/auth/registry.password user2
Bước 4 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d registry.example.com
/etc/letsencrypt/live/registry.example.com
trên máy chủ của bạn.Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo systemctl list-timers
snap.certbot.renew.service
là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Sun 2023-04-14 00:00:00 UTC 19min left Sat 2023-02-25 18:04:05 UTC n/a snap.certbot.renew.timer snap.certbot.renew.service
Sun 2023-04-14 00:00:20 UTC 19min left Sat 2023-02-25 10:49:23 UTC 14h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Sun 2023-04-14 00:44:06 UTC 3h 22min left Sat 2023-02-25 20:58:06 UTC 7h ago apt-daily.timer apt-daily.service
Mã:
$ sudo certbot renew --dry-run
Sao chép tệp Dhparam vào vùng chứa
Sao chép chứng chỉ nhóm Diffie-Hellman vào thư mục~/docker-registry/auth
, thư mục này sẽ được ánh xạ tới container.
Mã:
$ sudo cp /etc/ssl/certs/dhparam.pem ~/docker-registry/auth
Bước 5 - Cấu hình Nginx
Bước tiếp theo liên quan đến việc cấu hình máy chủ Nginx làm proxy giao diện người dùng cho máy chủ đăng ký Docker. Đăng ký Docker đi kèm với một máy chủ tích hợp hoạt động ở cổng 5000. Chúng tôi sẽ đặt nó sau Nginx.Tạo và mở tệp
~/docker-registry/auth/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano ~/docker-registry/auth/nginx.conf
Mã:
events { worker_connections 1024;
}
http { upstream docker-registry { server registry:5000; } ## Set a variable to help us decide if we need to add the ## 'Docker-Distribution-Api-Version' header. ## The registry always sets this header. ## In the case of nginx performing auth, the header is unset ## since nginx is auth-ing before proxying. map $upstream_http_docker_distribution_api_version $docker_distribution_api_version { '' 'registry/2.0'; } server { listen 443 ssl http2; server_name registry.example.com; # SSL ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/registry.example.com/chain.pem; access_log /var/log/nginx/registry.access.log; error_log /var/log/nginx/registry.error.log; # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_session_cache shared:SSL:10m; ssl_dhparam /etc/nginx/conf.d/dhparam.pem; resolver 8.8.8.8; # disable any limits to avoid HTTP 413 for large image uploads client_max_body_size 0; # required to avoid HTTP 411: see Issue #1486 (https://github.com/moby/moby/issues/1486) chunked_transfer_encoding on; location /v2/ { # Do not allow connections from docker 1.5 and earlier # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { return 404; } # To add basic authentication to v2 use auth_basic setting. auth_basic "Registry realm"; auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; ## If $docker_distribution_api_version is empty, the header is not added. ## See the map directive above where this variable is defined. add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always; proxy_pass http://docker-registry; proxy_set_header Host $http_host; # required for docker client's sake proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900; } }
}
Bước 6 - Khởi chạy Docker Registry
Chuyển sang Docker Registry thư mục.
Mã:
$ cd ~/docker-registry
Mã:
$ docker compose up -d
Mã:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3328b7e36bb2 nginx:alpine "/docker-entrypoint.…" About a minute ago Up 3 seconds 80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp docker-registry-nginx-1
bf7cdfc0e013 registry:2 "/entrypoint.sh /etc…" About a minute ago Up About a minute 5000/tcp docker-registry-registry-1
Mã:
$ docker login -u=user1 -p=password https://registry.example.com
Mã:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/username/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
https://registry.example.com/v2/
trong trình duyệt của mình và nó sẽ yêu cầu tên người dùng và mật khẩu. Bạn sẽ thấy một trang trống có {} trên đó.Bạn có thể kiểm tra URL trên thiết bị đầu cuối bằng cách sử dụng
curl
.
Mã:
$ curl -u user1 -X GET https://registry.example.com/v2/
Enter host password for user 'user1':
{}
Mã:
$ docker pull ubuntu:latest
Mã:
$ docker tag ubuntu:latest registry.example.com/ubuntu2204
Mã:
$ docker push registry.example.com/ubuntu2204
Mã:
$ curl -u user1 -X GET https://registry.example.com/v2/_catalog
Enter host password for user 'user1':
{"repositories":["ubuntu2204"]}
Đăng xuất bằng thiết bị đầu cuối để xóa credentials.
Mã:
$ docker logout https://registry.example.com
Removing login credentials for registry.example.com
Mã:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2 8db46f9d7550 2 weeks ago 24.2MB
nginx alpine 8e75cbc5b25c 2 weeks ago 41MB
ubuntu latest 08d22c0ceb15 5 weeks ago 77.8MB
registry.example.com/ubuntu2204 latest 08d22c0ceb15 5 weeks ago 77.8MB
Bước 7 - Truy cập và sử dụng sổ đăng ký Docker từ Máy khách
Đăng nhập vào máy khách-máy chủ của bạn. Ở bước 1, chúng tôi đã cài đặt Docker trên máy khách.Đăng nhập vào sổ đăng ký Docker riêng từ máy khách.
Mã:
$ docker login -u=user1 -p=password https://registry.example.com
Mã:
$ docker pull registry.example.com/ubuntu2204
Mã:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.example.com/ubuntu2204 latest 08d22c0ceb15 5 weeks ago 77.8MB
Mã:
$ docker run -it registry.example.com/ubuntu2204 /bin/bash
Mã:
root@647899f255db:
Mã:
root@a2da49fdbea9$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy