A saját Docker-nyilvántartás futtatása privát helyet biztosít a Docker-képek tárolásához. Akár vállalati környezetben van, akár csak csökkenteni kívánja a Docker Hubra való támaszkodását, a következőképpen állíthatja be és futtathatja a rendszerleíró adatbázis-telepítést.
A Docker Registry egy szerveroldali rendszer, amely tárolja és indexeli a Docker képeket. Az előre elkészített képeket „belökik” a rendszerleíró adatbázisba. A többi felhasználó ezután lefuttathatja őket a futtatáshoz, anélkül, hogy hozzáférést kellene kapnia az eredeti Dockerfile-hoz.
A legismertebb nyilvános nyilvántartás a Docker Hub. A saját nyilvántartás használatával átveheti az irányítást a képtárolás és a hozzáférési módszerek felett. Megkönnyítheti a külső eszközökkel történő integrációt is.
Vannak kezelt szolgáltatások állnak rendelkezésre ez lehetővé teszi a rendszerleíró adatbázis-telepítések gyors létrehozását. Ez az útmutató a rendszerleíró adatbázis saját kiszolgálón történő tárolására összpontosít. Az egyetlen előfeltétel, amire szükséged van telepítse a Docker és a Docker-compose programokat azon a gépen, amelyiknek a rendszerleíró adatbázisa lesz.
Nyilvántartás futtatása
A Docker Registry szerver saját Docker képként kerül terjesztésre. Megszerezheti a Docker Hub-tól. A kiszolgáló az 5000-es porton látható; hozzá kell kötnie egy gazdagép portot, hogy az ügyfelek csatlakozhassanak.
Be kell állítania egy kötetet is, hogy a Docker Hub legyen hová tartósan tárolni a feltöltött képeket. Győződjön meg arról, hogy elegendő szabad hely áll rendelkezésre a gazdagépen. Az aktívan használt nyilvántartás gyorsan növekedhet.
Kezdje a docker-compose.yml
fájl a telepítés leírására. Beállíthatja a portokat és a fájlrendszer útvonalait, hogy megfeleljenek az Ön igényeinek. Ez a példa hozzáférhetővé teszi a rendszerleíró adatbázist az 5000-es porton. A képeket a data
mappát a munkakönyvtárban.
version: "3" services: registry: image: registry:2 ports: - 5000:5000 environment: - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data restart: unless-stopped volumes: - ./data:/data
Mentse a fájlt, és futtassa docker-compose up -d
a rendszerleíró adatbázis elindításához. A docker-compose lekéri a rendszerleíró adatbázis képét a Docker Hubról. Ezután egy új tárolót indít el a konfigurációval.
Hozzáférés a regisztrációhoz
Most már képesnek kell lennie a rendszerleíró adatbázis használatának megkezdésére. Címkézzen egy képet a rendszerleíró adatbázisához vezető útvonal segítségével. Te tudod használni localhost
ha magában a rendszerleíró szerveren dolgozik. Ezután képesnek kell lennie arra, hogy a képet felemelje a rendszerleíró adatbázisba.
docker tag my-image localhost:5000/my-image docker push localhost:5000/my-image
A kép mostantól elérhető lesz a nyilvántartásban. Ha megvizsgálja a data
mappában láthatja a képet alkotó rétegeket. Használatával lehúzhatta egy másik gépről docker pull
. Cserélje ki localhost
a nyilvántartást futtató kiszolgáló hálózati címével.
A hitelesítés beállítása
A rendszerleíró adatbázis jelenleg nincs biztonságban. Bárki húzhat és tolhat képeket! Oldjuk meg ezt hitelesítés beállításával. A konfigurálás után használnia kell docker login
mielőtt kapcsolatba léphet a rendszerleíró adatbázissal.
A Docker Registry alapértelmezett hitelesítési megközelítése a HTTP alap hitelesítést használja. Létre kell hoznia egy htpasswd
fájl – ezt a legjobban a apache2-utils
.
sudo apt install apache2-utils mkdir auth htpasswd -Bc auth/.htpasswd my-username
Ez létrehoz egy hitelesítési fájlt a felhasználó számára my-username
. A rendszer kéri a jelszó megadását. A htpasswd
A fájl ezután a munkakönyvtárba kerül beírásra auth/.htpasswd
.
Következő frissítse a docker-compose.yml
a hitelesítési rendszer konfigurálásához. Meg kell adnia a használt hitelesítés típusát és az elérési útvonalát htpasswd
fájl. Ezt új kötetként kell felszerelni.
version: "3" services: registry: image: registry:2 ports: - 5000:5000 environment: - REGISTRY_AUTH: htpasswd - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data restart: unless-stopped volumes: - ./auth:/auth - ./data:/data
Fuss docker-compose up -d --force-recreate
a futó rendszerleíró tároló újrateremtéséhez az új konfiguráció használatával. Meg kell találnia, hogy a Docker parancssori felület most nem hajlandó kommunikálni a rendszerleíró adatbázissal.
A hozzáférés visszaállításához futtassa docker login localhost:5000
. Be kell állítania a beállításjegyzék URI-t, ha nem ugyanazon a gépen futtatja a Dockert. A Docker kéri, hogy adja meg felhasználónevét és jelszavát. Használja a beállított értékeket a .htpasswd
fájl.
Miután a hitelesítés sikeres volt, újra elkezdheti a képeket tolni és húzni. A Docker gyorsítótárba helyezi a hitelesítő adatait, így addig nem kell megismételnie a hitelesítést docker logout
.
SSL beállítása
Hozzá kell adnia egy SSL-tanúsítványt a legalapvetőbb kapcsolatok kivételével localhost
. SSL-tanúsítványt hozzáadhat a nyilvántartáshoz, ha a tanúsítványt kötetbe illeszti, és további környezeti változókat állít be. Általában frissítenie kell a port konfigurációját, hogy a rendszerleíró adatbázis az alapértelmezett HTTPS portot, a 443-at hallgassa.
version: "3" services: registry: image: registry:2 ports: - 443:5000 environment: - REGISTRY_AUTH: htpasswd - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd - REGISTRY_HTTP_ADDR: 0.0.0.0:443 - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/cert.crt - REGISTRY_HTTP_TLS_KEY=/certs/cert.key - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data restart: unless-stopped volumes: - ./auth:/auth - ./certs:/certs - ./data:/data
Adja hozzá a tanúsítványfájlokat ide: certs
majd indítsa újra a rendszerleíró adatbázist. A HTTPS támogatással vissza kell térnie a mellékelt tanúsítványfájl segítségével.
SSL a LetsEncrypt segítségével
A rendszerleíró adatbázis-kiszolgáló beépített támogatást nyújt a Let’s Encrypt programhoz. Ez lehetővé teszi az SSL-tanúsítványok automatikus létrehozását és megújítását. A Let’s Encrypt használatához te kell nyilvánosan tegye nyilvántartását a 443-as portra.
Állítsa be a REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL
és REGISTRY_HTTP_TLS_LETSENCRYPT_HOSTS
környezeti változók a TLS támogatás hozzáadásához a rendszerleíró adatbázisához. A Let’s Encrypt az e-mail címet fogja használni az SSL-tanúsítványok kapcsolatfelvevőjeként.
version: "3" services: registry: image: registry:2 ports: - 443:5000 environment: - REGISTRY_AUTH: htpasswd - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd - REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL: example@example.com - REGISTRY_HTTP_TLS_LETSENCRYPT_HOSTS: [my-registry.com] - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data restart: unless-stopped volumes: - ./auth:/auth - ./certs:/certs - ./data:/data
Hozza létre újra a tartályt docker-compose up -d --force-recreate
a változás alkalmazásához. A rendszerleíró adatbázis a Let’s Encrypt használatával SSL-tanúsítványt szerez a megadott tartományokhoz. Néhány percbe telhet, amíg a tanúsítvány elérhetővé válik.
A telepítés egyéb módjai
A docker-compose használatával a HTTP Basic Auth és a Let’s Encrypt a privát tároló-nyilvántartás futtatásának legegyszerűbb módja. Vannak más lehetőségek is, különösen, ha fejlettebb hozzáférés-vezérlést szeretne.
Az alap hitelesítés használata nem terjed túl jó néhány felhasználónál. Alternatív megoldásként a szerver támogatja a delegált hitelesítési rutin amely külső token szerverekre támaszkodik. Ez olyan esetekre készült, ahol szoros integrációra van szükség a szervezeti beléptető rendszerekkel.
A rendszerleíró adatbázis-kiszolgáló nem hajtja végre a token-hitelesítést. Olyan projektek, mint docker_auth próbálja meg hozzáadni ezt a hiányzó darabot, egy teljes értékű hitelesítési rendszert biztosítva, amely a fő nyilvántartás mellett telepíthető.
Az alternatív projektek célja, hogy megkönnyítsék a rendszerleíró adatbázis kezelését, anélkül, hogy gyakorlati terminálparancsokra lenne szükség. Portus egy SUSE projekt, amely webes felületet, valamint saját felhasználói hitelesítési rendszert biztosít.