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 updateSuorita 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 dockerSuorita alla oleva komento nähdäksesi asennetun Docker-version.
$ docker --version
Docker version 26.1.3, build b72abbbKäynnistä ja ota Docker-palvelu käyttöön:
sudo systemctl enable --now dockerTilan 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 certbotSSL-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-expiringOdotettu 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-leSertifikaattisi tallennetaan kansioon /etc/letsencrypt/live/
/etc/letsencrypt/live/registry.domain.com/fullchain.pem
/etc/letsencrypt/live/registry.domain.com/privkey.pemMissä :
- fullchain.pem ⇒ yhdistetty tiedosto
cert.pemjachain.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/registryPaikallisen 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:2Paikallisen 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.pemLuo 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:2Korvaa 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
ed960bd27529be26e7ef728027844a62b0731b08bafdbbf63dea328dac46e024Tarkista 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-registryKuvien 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 --reloadLisää 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 dockerDocker-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.comLataan 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:latestMerkitse 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/ubuntuTyö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: 943Jos 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/
ubuntuTä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/ubuntuSeuraavassa 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