Verkkosivustohaku

Docker-rekisterin asennus Rocky Linux 8/AlmaLinux 8 -järjestelmään


Docker-rekisteri on tallennus- ja sisällönjakelujärjestelmä, joka sisältää nimettyjä Docker-kuvia, saatavilla eri tunnisteversioina. Dockeria käyttävät käyttäjät ovat vuorovaikutuksessa rekisterin kanssa docker push- ja docker pull -komennoilla. Joskus on järkevää tallentaa Docker-kuvat paikalliseen rekisteriin sen sijaan, että ne työntäisi Docker Hubiin. Tässä oppaassa asetamme yksityisen Docker-rekisterin Rocky/AlmaLinux 8 -järjestelmään, suojattuna Let’s Encrypt -SSL-sertifikaatilla.

Säästät paljon kaistanleveyttä suurelle tiimille ja pidät kuvat, joita et halua julkaistavan julkisesti, turvassa. Paikallisen Docker-rekisterin luominen onnistuu muutamalla vaiheella. Dockerin asentamisesta eri jakeluihin katso ohjeesta Docker CE:n asentaminen Linux-järjestelmiin.

Asenna Docker Engine

Tarvitsemme Docker Engineä rekisteripalvelun ajamiseen. Päivitä järjestelmäsi ennen sen asentamista.

sudo yum -y update

Suorita alla olevat komennot asentaaksesi Docker CE:n.

sudo curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 

Asenna sitten Docker CE -paketit ja Compose-laajennus.

sudo yum -y install docker-ce docker-ce-cli containerd.io

Jos haluat käyttää Dockeria ei-juurikäyttäjänä, sinun kannattaa nyt harkita käyttäjäsi lisäämistä “docker” -ryhmään:

sudo usermod -aG docker $USER
newgrp docker

Suorita alla oleva komento nähdäksesi asennetun Docker-version.

$ docker --version
Docker version 26.1.3, build b72abbb

Käynnistä ja ota Docker-palvelu käyttöön:

sudo systemctl enable --now docker

Tilan tulisi olla käynnissä:

 $ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2024-07-13 19:53:19 UTC; 4s ago
     Docs: https://docs.docker.com
 Main PID: 17832 (dockerd)
    Tasks: 7
   Memory: 30.4M
   CGroup: /system.slice/docker.service
           └─17832 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jul 13 19:53:19 rocky8.cloudspinx.com systemd[1]: Starting Docker Application Container Engine...
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.316260221Z" level=info msg="Starting up"
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.340012039Z" level=info msg="Loading containers: start."
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.621507107Z" level=info msg="Loading containers: done."
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.644692641Z" level=info msg="Docker daemon" commit=8e96db1 containerd-snapshotter=false storage-driver=overlay2 versio>
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.644783862Z" level=info msg="Daemon has completed initialization"
Jul 13 19:53:19 rocky8.cloudspinx.com dockerd[17832]: time="2024-07-13T19:53:19.671038318Z" level=info msg="API listen on /run/docker.sock"
Jul 13 19:53:19 rocky8.cloudspinx.com systemd[1]: Started Docker Application Container Engine.
[root@rocky8 ~]#

Luo Let’s Encrypt -SSL-sertifikaatteja

Kuten aiemmin luvattiin, käytämme Let’s Encrypt SSL -sertifikaatteja turvataksemme Docker Registry -asetuksemme, joka toimii Rocky/AlmaLinux -järjestelmässä.

Asenna certbot-työkalu, jota käytetään Let’s Encrypt -varmenteen pyytämiseen.

sudo yum -y install epel-release
sudo yum -y install certbot

SSL-sertifikaatin pyyntö:

export DOMAIN="registry.domain.com"
export EMAIL="[email "
certbot certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

Odotettu todistusten luontituloste:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for registry.computingforgeeks.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/registry.computingforgeeks.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/registry.computingforgeeks.com/privkey.pem
   Your cert will expire on 2021-07-28. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Sertifikaattisi tallennetaan kansioon /etc/letsencrypt/live/

/etc/letsencrypt/live/registry.domain.com/fullchain.pem
/etc/letsencrypt/live/registry.domain.com/privkey.pem

Missä :

  • fullchain.pem ⇒ yhdistetty tiedosto cert.pem ja chain.pem
  • chain.pem ⇒ välikertificate
  • cert.pem ⇒ SSL-palvelimen varmenne (sisältää julkisen avaimen)
  • privkey.pem ⇒ yksityisen avaimen tiedosto

Suorita Docker-rekisteri Rocky Linuxilla/AlmaLinux 8:lla

Voit käyttää Docker-rekisteriä joko SSL:llä tai ilman. Näytämme, kuinka voit käyttää Docker-rekisteriä kummallakin tavalla.

Mutta ensin luo hakemisto, johon Dockerin rekisterikuvat tallennetaan:

sudo mkdir /var/lib/docker/registry

Paikallisen Docker-rekisterin suorittaminen ilman SSL:ää

docker run -d -p 5000:5000 \
--name docker-registry \
--restart=always \
-v /var/lib/docker/registry:/var/lib/registry \
registry:2

Paikallisen Docker-rekisterin ajaminen SSL:llä

Luo hakemisto ja aseta varmenteet isäntäkoneelle:

export DOMAIN="registry.domain.com"
mkdir /certs
sudo cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem /certs/fullchain.pem
sudo cp /etc/letsencrypt/live/$DOMAIN/privkey.pem /certs/privkey.pem
sudo cp /etc/letsencrypt/live/$DOMAIN/cert.pem /certs/cert.pem

Luo Docker Registry -säilö:

docker run -d --name docker-registry --restart=always \
-p 5000:5000 \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem  \
-e REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem \
-v /certs:/certs \
-v /var/lib/docker/registry:/var/lib/registry \
registry:2

Korvaa registry.domain.com rekisterialidomainillasi.

Se lataa registry:2 Docker-kuvan, jos sitä ei ole, ja luo kontin

Unable to find image 'registry:2' locally
2: Pulling from library/registry
ddad3d7c1e96: Pull complete
6eda6749503f: Pull complete
363ab70c2143: Pull complete
5b94580856e6: Pull complete
12008541203a: Pull complete
Digest: sha256:bac2d7050dc4826516650267fe7dc6627e9e11ad653daca0641437abdf18df27
Status: Downloaded newer image for registry:2
ed960bd27529be26e7ef728027844a62b0731b08bafdbbf63dea328dac46e024

Tarkista säiliön tila:

# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                                       NAMES
ed960bd27529   registry:2   "/entrypoint.sh /etc…"   28 seconds ago   Up 27 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   docker-registry

Kuvien työntämiseksi rekisteripalvelimelle, aseta seuraavasti:

$ curl https://$DOMAIN:5000/v2/_catalog
{"repositories":[]}

Jos sinulla on SELinux käytössä, saatat kohdata ongelmia portin 5000 käytössä. Harkitse SELinuxin poistamista käytöstä tai sen asettamista sallivaan tilaan, jos ilmenee ongelmia.

Jos firewalld on käytössä ja käynnissä, salli portti palomuurissa.

sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

Lisää epävarma rekisteri Docker-moottoriin

Docker käyttää oletuksena https-yhteyttä yhdistääkseen Docker-rekisteriin. Kuitenkin voi esiintyä tilanteita, joissa käytetään epävarmaa rekisteriä, erityisesti luotetussa verkossa. Tämä poistaa tarpeen CA:n allekirjoittamalle sertifikaatille sisäiseen käyttöön tai itse allekirjoitetun sertifikaatin luottamiselle kaikissa Docker-solmuissa. Tässä ovat vaiheet epävarman rekisterin lisäämiseksi Docker Engineen.

Ubuntulle Xenial, muokkaa /etc/docker/daemon.json ja päivitä avain ”insecure-registries”. Esim.

{
 "insecure-registries" : ["registry.domain.com:5000"]
 }

Muokkaa tiedostoa /etc/docker/daemon.json, esimerkiksi.

{
 "insecure-registries" : ["registry.domain.com:5000"]
 }

Ubuntu Trustyn osalta muokkaa tiedostoa /etc/default/docker ja päivitä DOCKER_OPTS, esimerkiksi

DOCKER_OPTS='--insecure-registry registry.domain.com:5000'

Käynnistä sitten Docker-moottori uudelleen

sudo systemctl restart docker

Docker-kuvien työntäminen paikalliseen rekisteriin

Nyt kun rekisteri on valmis, voit alkaa työntää Docker-kuvia siihen. Jos sinulla ei ole aktiivista DNS-palvelinta, käytä /etc/hosts-tiedostoa yhdistääksesi isäntänimen IP-osoitteeseen.

$ sudo vim /etc/hosts
192.168.1.23 registry.domain.com

Lataan ubuntu -viimeisimmän Docker-kuvan Docker Hubista ja työnnän sen paikalliseen Docker-rekisteriini.

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
345e3491a907: Pull complete
57671312ef6f: Pull complete
5e9250ddb7d0: Pull complete
Digest: sha256:cf31af331f38d1d7158470e095b132acd126a7180a54f263d386da88eb681d93
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Merkitse kuva nimellä registry.domain.com:5000/ubuntu. Tämä luo lisätunnisteen olemassa olevalle kuvalle. Kun tunnisteen ensimmäinen osa on isäntänimi ja portti, Docker tulkitsee tämän rekisterin sijainniksi työntäessä.

docker tag ubuntu $DOMAIN:5000/ubuntu

Työnnä kuva paikalliseen rekisteriin, joka toimii osoitteessa registry.domain.com:5000/ubuntu

$ docker push $DOMAIN:5000/ubuntu
Using default tag: latest
The push refers to repository [registry.domain.com:5000/ubuntu]
2f140462f3bc: Pushed
63c99163f472: Pushed
ccdbb80308cc: Pushed
latest: digest: sha256:86ac87f73641c920fb42cc9612d4fb57b5626b56ea2a19b894d0673fd5b4f2e9 size: 943

Jos kuvan lataus onnistui, sinun pitäisi saada lopuksi sha256-tiiviste. Työnnetyt kuvat tallennetaan hakemistoon /var/lib/registry/docker/registry/v2/repositories.

$ ls /var/lib/docker/registry/docker/registry/v2/repositories/
ubuntu

Tämä on sama menetelmä, jota käytät mukautettujen Docker-kuvien lähettämiseen. Lataa Docker-kuvia paikallisesta rekisteristä käyttämällä komentoa:

$ docker pull registry-hostname:500/image:tag
#E.g
$ docker pull registry.domain.com:5000/ubuntu

Seuraavassa oppaassani käsittelen nginx-proksin konfigurointia varaston käyttämiseksi https:n kautta.

Voit myös tutustua asennukseen Dockerin käyttöliittymän hallinnan – Portainerin avulla