Ubuntu 22.04
Sponsored Link

Docker : रजिस्ट्री का प्रयोग करें2023/09/04

 
Docker छवियों के लिए निजी रजिस्ट्री बनाने के लिए Docker-Registry स्थापित करें।
[1] रजिस्ट्री स्थापित करें।
root@dlp:~#
apt -y install docker-registry
[2] रजिस्ट्री कॉन्फ़िगर करें।
यह HTTP कनेक्शन और नो-ऑथेंटिकेशन का उपयोग करने के लिए सेटिंग्स है।
root@dlp:~#
vi /etc/docker/registry/config.yml
# [auth] अनुभाग पर इस प्रकार टिप्पणी करें

version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/docker-registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
#auth:
#  htpasswd:
#    realm: basic-realm
#    path: /etc/docker/registry
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

root@dlp:~#
systemctl restart docker-registry
# किसी भी ग्राहक से पहुंच की संभावना को सत्यापित करें
# HTTP कनेक्शन के लिए, इसे [insecure-registries] सेटिंग जोड़ने की आवश्यकता है

root@dlp:~#
vi /etc/docker/daemon.json
# नया निर्माण
# HTTP कनेक्शन की अनुमति देने के लिए होस्ट जोड़ें

{
  "insecure-registries":
    [
      "docker.internal:5000",
      "dlp.srv.world:5000"
    ]
}

root@dlp:~#
systemctl restart docker
# [push] लोकलहोस्ट से

root@dlp:~#
docker images

REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
srv.world/ubuntu-apache2   latest    b7891f747bd5   18 hours ago   227MB
srv.world/ubuntu-nginx     latest    51f5190bb9d9   18 hours ago   170MB
ubuntu                     latest    2dc39ba059dc   6 days ago     77.8MB

root@dlp:~#
docker tag ubuntu dlp.srv.world:5000/ubuntu:my-registry

root@dlp:~#
docker push dlp.srv.world:5000/ubuntu:my-registry

root@dlp:~#
docker images

REPOSITORY                  TAG           IMAGE ID       CREATED        SIZE
srv.world/ubuntu-apache2    latest        b7891f747bd5   18 hours ago   227MB
srv.world/ubuntu-nginx      latest        51f5190bb9d9   18 hours ago   170MB
dlp.srv.world:5000/ubuntu   my-registry   2dc39ba059dc   6 days ago     77.8MB
ubuntu                      latest        2dc39ba059dc   6 days ago     77.8MB

# [pull] दूसरे नोड से

root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

root@node01:~#
docker images

REPOSITORY                  TAG           IMAGE ID       CREATED      SIZE
dlp.srv.world:5000/ubuntu   my-registry   2dc39ba059dc   6 days ago   77.8MB
[3] मूल प्रमाणीकरण सक्षम करने के लिए, निम्नानुसार कॉन्फ़िगर करें।
root@dlp:~#
apt -y install apache2-utils
root@dlp:~#
vi /etc/docker/registry/config.yml
# [auth] अनुभाग पर टिप्पणी हटाएँ और passwd फ़ाइल निर्दिष्ट करें

.....
.....
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker/registry/.htpasswd
.....
.....

root@dlp:~#
systemctl restart docker-registry
# उपयोगकर्ता जोड़ें
# आरंभिक फ़ाइल निर्माण में [-c] जोड़ें

root@dlp:~#
htpasswd -Bc /etc/docker/registry/.htpasswd ubuntu

New password:
Re-type new password:
Adding password for user ubuntu

# पहुंच संभव सत्यापित करें
# an error is shown if access with no-authentication

root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

Error response from daemon: Head http://dlp.srv.world:5000/v2/nginx/manifests/my-registry: no basic auth credentials
# [htpasswd] के साथ जोड़े गए उपयोगकर्ता द्वारा प्रमाणित करें

root@node01:~#
docker login dlp.srv.world:5000

Username: ubuntu
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

root@node01:~#
docker images

REPOSITORY                  TAG           IMAGE ID       CREATED      SIZE
dlp.srv.world:5000/ubuntu   my-registry   2dc39ba059dc   6 days ago   77.8MB
[4] HTTPS के माध्यम से एक्सेस करने और Let's Encrypt इत्यादि जैसे वैध प्रमाणपत्रों का उपयोग करने के लिए, निम्नानुसार कॉन्फ़िगर करें।
यह उदाहरण उस परिवेश पर आधारित है जिसे [/etc/letsencrypt/live/dlp.srv.world] के अंतर्गत प्रमाणपत्र प्राप्त हुए हैं।
root@dlp:~#
mkdir /etc/docker/certs.d

root@dlp:~#
cp -p /etc/letsencrypt/live/dlp.srv.world/{fullchain,privkey}.pem /etc/docker/certs.d/

root@dlp:~#
chown docker-registry /etc/docker/certs.d/{fullchain,privkey}.pem

root@dlp:~#
vi /etc/docker/registry/config.yml
# [http] अनुभाग के अंतर्गत [tls] अनुभाग इस प्रकार जोड़ें

.....
.....
http:
  addr: :5000
  tls:
    certificate: /etc/docker/certs.d/fullchain.pem
    key: /etc/docker/certs.d/privkey.pem
  headers:
    X-Content-Type-Options: [nosniff]
.....
.....

root@dlp:~#
systemctl restart docker-registry
# पहुंच संभव सत्यापित करें
# HTTPS कनेक्शन पर, इसे डॉकर पर [insecure-registries] जोड़ने की आवश्यकता नहीं है

root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

root@node01:~#
docker images

REPOSITORY                 TAG           IMAGE ID       CREATED       SIZE
ubuntu                     latest        7e0aa2d69a15   2 weeks ago   72.7MB
dlp.srv.world:5000/ubuntu  my-registry   62d49f9bab67   4 weeks ago   133MB
[5] HTTPS के माध्यम से पहुंचने और स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करने के लिए, निम्नानुसार कॉन्फ़िगर करें।
यह उदाहरण उस परिवेश पर आधारित है जिसमें प्रमाणपत्र [/etc/ssl/private] के अंतर्गत बनाए गए हैं।
root@dlp:~#
mkdir -p /etc/docker/certs.d/dlp.srv.world:5000

root@dlp:~#
cp -p /etc/ssl/private/server.{crt,key} /etc/docker/certs.d/dlp.srv.world:5000/

root@dlp:~#
chown docker-registry /etc/docker/certs.d/dlp.srv.world:5000/server.{crt,key}

root@dlp:~#
vi /etc/docker/registry/config.yml
# [http] अनुभाग के अंतर्गत [tls] अनुभाग इस प्रकार जोड़ें

.....
.....
http:
  addr: :5000
  tls:
    certificate: /etc/docker/certs.d/dlp.srv.world:5000/server.crt
    key: /etc/docker/certs.d/dlp.srv.world:5000/server.key
  headers:
    X-Content-Type-Options: [nosniff]
.....
.....

root@dlp:~#
systemctl restart docker-registry
# पहुंच संभव सत्यापित करें
# स्वहस्ताक्षरित प्रमाणपत्र के कारण त्रुटि दिखाई गई है

root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

Error response from daemon: Get https://dlp.srv.world:5000/v2/: x509: certificate signed by unknown authority
# क्लाइंट को रजिस्ट्री सर्वर का प्रमाणपत्र कॉपी करें

root@node01:~#
mkdir -p /etc/docker/certs.d/dlp.srv.world:5000

root@node01:~#
scp root@dlp.srv.world:"/etc/docker/certs.d/dlp.srv.world:5000/server.crt" /etc/docker/certs.d/dlp.srv.world:5000/ca.crt

root@node01:~#
docker pull dlp.srv.world:5000/ubuntu:my-registry

root@node01:~#
docker images

REPOSITORY                 TAG           IMAGE ID       CREATED       SIZE
ubuntu                     latest        7e0aa2d69a15   2 weeks ago   72.7MB
dlp.srv.world:5000/ubuntu  my-registry   62d49f9bab67   4 weeks ago   133MB
मिलान सामग्री