På CoreOS, konfigurer ditt eget Docker-register

På CoreOS, konfigurer ditt eget Docker-register

Vi kjenner og elsker alle Docker, en plattform for å lage, administrere og distribuere applikasjonsbeholdere på tvers av flere maskiner. Docker Inc. tilbyr en tjeneste for åpen kildekode-beholdere som skal lastes ned (eller trekkes) som et git-lager kjent som "Docker Registry." Tenk på det som en GitHub for Docker-containere.

Men hva om du vil være vert for ditt eget register atskilt fra det offentlige? Vel, Docker Inc. har åpen kildekode deres registerapplikasjon på GitHub.

Denne opplæringen tar deg gjennom prosessen med å sette opp et privat Docker-register ved å bruke CoreOS på en ny VPS.

CoreOS + Docker

Vi kommer ikke til å bruke massevis av tid på å gå gjennom nøyaktig hva Docker og CoreOS kan gjøre, siden det er utenfor denne opplæringen. I hovedsak er CoreOS designet for massive serverklynger, den er liten, rask og får regelmessige sikkerhetsoppdateringer automatisk. Rotfilsystemet er også skrivebeskyttet, noe som betyr at du må bruke Docker for å kjøre enhver form for programvare som ikke er inkludert i basisinstallasjonen.

Dette gjør Core OS til et perfekt vertssystem for Docker!

Trekker og kjører det nyeste registret

Docker Inc. har levert registeret som et toppnivåbilde, dette betyr at vi kan trekke det ned med en enkel:

docker pull registry

This can take a few minutes depending on the connection speed.

Et pluss ved å være et toppnivåbilde betyr også at det får regelmessig støtte og oppdateringer.

La oss nå teste ut registret. Vi kan opprette en ny beholder ved å bruke registerbildet:

docker run -p 5000:5000 -d --name=basic_registry registry

For de som ikke har brukt Docker for mye, -pstår flagget for PORT, noe som betyr at vi eksponerer port 5000 på fra containeren til vertsport 5000.

Den -dflagget står for daemon, vil dette føre til at beholderen til å kjøre i bakgrunnen og ikke skrive ut til den aktuelle SSH sesjon, vi ønsker også å nevne dette grunnleggende test container med --namealternativet, slik at vi enkelt kan administrere den senere.

Sørg for at den grunnleggende registerbeholderen kjører med docker ps. Utgangen skal se ut som:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Besøk også http://YOUR_IP:5000i nettleseren din, og du bør få en melding som følgende:

"docker-registry server (dev) (v0.8.1)"

Notice the word dev in the parenthesis. This means that the server is currently running the dev config. We'll look over more configuration soon.

Du har nå ditt eget (veldig grunnleggende) containerregister som kjører! Men vi er ikke ferdige ennå.

Kanskje du vil holde dette privat fra nysgjerrige øyne, eller kanskje lagre bildene dine på Amazon S3 i stedet for lokal lagring. La oss gå over de ulike konfigurasjonsalternativene i neste avsnitt.

Før vi går videre, la oss drepe testbeholderen slik at vi ikke støter på motstridende porter.

docker kill basic_registry

Registerkonfigurasjon

Det er to måter vi kan sende konfigurasjon til Docker Registry. En måte er å sende miljøvariabler til en ny beholder, og den andre er å legge til en konfigurasjonsfil.

Her er noen av de vanlige konfigurasjonsalternativene vi kommer til å bruke:

  • loglevel- Minimumsmengde informasjon for å logge på konsollen. Standard er info.
  • standalone– Bør dette registeret handle på egenhånd? (Forespør aldri det offentlige registeret.) Standard er true.
  • index_endpoint- Hvis ikke frittstående, hvilken annen indeks vil vi spørre etter? Standard index.docker.io.
  • cacheog cache_lru- Alternativer knyttet til bruk av en Redis-cache for små filer, vi skal komme inn på dette senere.
  • storage- Hvilken lagringsstøtte skal vi bruke for denne serveren? (I denne opplæringen bruker vi lokalt).
  • storage_path - Hvis du bruker lokal lagring, hvilken katalog bør vi bruke for å holde filer i?

Før vi begynner å jobbe med konfigurasjonen, trenger vi en basisfil å jobbe med. Filen fra Docker Registry-depotet på GitHub vil fungere helt fint:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

Filen skal lagres med en utgang som:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Flott! Nå kan vi endre denne filen for å passe våre behov.

Det eneste tekstredigeringsprogrammet som følger med Core OS er vim, men ikke bekymre deg hvis du aldri har brukt det før, dette vil forklare trinn for trinn hva du skal redigere og hvordan du gjør det.

vim config_sample.yml

Når du har åpnet filen, trykk på Iog nederst til høyre skal vises: -- INSERT --for innsettingsmodus. Rull helt til bunnen av filen ved å bruke piltastene, du bør se en seksjon merket prod.

Vi kommer til å endre de to linjene, endringene er nedenfor

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Det vi har gjort er å endre prodkonfigurasjonen slik at den kommer fra localseksjonen i stedet for s3seksjonen. Deretter overskrev vi for storage_pathå bruke banen /datainne i den nye beholderen.

Når du har bekreftet at alle endringene er riktige, trykk for ESCå avslutte innsettingsmodus og skriv :wq(dette betyr at du skriver endringene til filen og avslutter vim.)

La oss nå gi nytt navn til filen til bare config.yml

mv config_sample.yml config.yml

Redis caching (valgfritt)

Hvis du vil bruke redis for å øke hastigheten på beholderregistret, er det så enkelt som å trekke en ny beholder fra det offentlige registret og legge til noen flere linjer med konfigurasjon.

Først, trekk toppnivåbildet av Redis:

docker pull redis

Når bildet er hentet vellykket, kan vi kjøre det og navngi det akkurat som vi gjorde med testregisteret:

docker run -d --name registry-redis redis

Fordi redis er i minnet, trenger vi ikke å gjøre noen konfigurasjon for det, da vi vil koble det til registerbeholderen i senere trinn.

Igjen, sørg for at den kjører ved å bruke docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Åpne nå inn config.ymligjen vimog gå inn i innsettingsmodus akkurat som første gang vi redigerte den.

Legg til følgende linjer under prodseksjonen, og pass på å rykke inn riktig. Denne gangen legger vi bare til cacheog cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

Miljøvariablene REDIS_PORT_6379_TCP_ADDRog REDIS_PORT_6379_TCP_PORTsendes til registerbeholderen ved kobling med Redis-beholderen.

Med det har du nå satt opp en Redis-beholder som vil fungere hånd i hånd med registerbeholderen din. Nå på å bygge registeret!

Bygge containeren

Vi har all konfigurasjonen satt og klar, nå må vi bygge selve registerbeholderen.

Fyr opp for vim Dockerfileå lage en ny Dockerfile. Gå inn i innsettingsmodus og følg redigeringene nedenfor.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

Det vi har gjort ovenfor er i hovedsak å utvide registerbildet slik at det vil bruke vår konfigurasjonsfil og innstillinger. En Dockerfile er et sett med byggeinstruksjoner for Docker å lese og bygge. Hvis du vil lære mer om Dockerfiles og deres syntaks, ta en titt på den offisielle Docker-sidedokumentasjonen.

Deretter må vi bygge beholderen for bruk.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

Nå er vi klare til å løpe!

La oss lage en katalog på vertssystemet vårt som skal monteres i beholderen som /datavolumet.

mkdir registry-data

Nå kan vi spinne opp en ny container. Hvis du planlegger å bruke Redis-cachen, bruk den andre kommandoen nedenfor.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

For å sikre at serveren din kjører riktig, besøk http://YOUR_IP:5000. Du vil se følgende melding:

"docker-registry server (prod) (v0.8.1)"

Legg merke til (prod)betydningen av konfigurasjonsendringene våre var vellykkede!

Konfigurer din lokale Docker-klient

Nå som vi har vårt eget kjørende register, vil vi at Docker-klienten på våre lokale maskiner skal begynne å bruke den. Vanligvis vil du bruke kommandoen: docker login, men for vår bruk må vi legge til ett argument til til påloggingskommandoen:

docker login YOUR_IP:5000

Skriv inn et brukernavn og passord (tenk på dette som å lage en ny konto) og ignorer meldingen som sier at du må aktivere den.

Deretter tar vi et lagerbilde og skyver det opp til vårt eget depot.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Hvis alt trykker riktig, bør den endelige meldingen være slik:

Pushing tag for rev [a9eb17255234] on 

Gratulerer! Du har satt opp ditt eget docker-lager.

Hva blir det neste?

Her er noen ideer om hvordan du kan forbedre ditt nye private register:

  • Omvendt proxy ved å bruke Nginx eller Apache for å plassere ekstra sikkerhet foran den, som enkel HTTP-autentisering.
  • Skaff deg et domene for serveren din og konfigurer det slik at du kan få tilgang til registeret ditt med noe sånt som: registry.mysite.com
  • Kjøp (eller selvsigner) et SSL-sertifikat for å legge til enda mer beskyttelse hvis beholderne dine inneholder sensitiv informasjon.

Slik sjekker du Hyper-V-beholdere på Windows 10 Insider

Slik sjekker du Hyper-V-beholdere på Windows 10 Insider

Microsoft har forklart i et nytt blogginnlegg hvordan Windows Insiders kan teste Hyper-V-beholdere på Windows 10, en ny virtualiseringsløsning som lar applikasjoner kjøre uten å påvirke resten av operativsystemet ditt.

Installer Rancher OS via iPXE

Installer Rancher OS via iPXE

Rancher OS er en veldig lett Linux-distribusjon bygget rundt Docker. Selve operativsystemet veier rundt 20 MB. Denne opplæringen vil få deg i gang med

På CoreOS, konfigurer ditt eget Docker-register

På CoreOS, konfigurer ditt eget Docker-register

Vi kjenner og elsker alle Docker, en plattform for å lage, administrere og distribuere applikasjonsbeholdere på tvers av flere maskiner. Docker Inc. tilbyr en tjeneste t

Installerer docker-compose på CoreOS

Installerer docker-compose på CoreOS

Denne artikkelen forklarer hvordan du installerer docker-compose på CoreOS. I CoreOS er /usr/-mappen uforanderlig, så standard /usr/local/bin-banen er utilgjengelig for

Installer Docker CE på Ubuntu 18.04

Installer Docker CE på Ubuntu 18.04

Innledning Docker er en applikasjon som lar oss distribuere programmer som kjøres som containere. Den ble skrevet på det populære programmeringsspråket Go

Lag en Docker Swarm på Alpine Linux 3.9.0

Lag en Docker Swarm på Alpine Linux 3.9.0

Introduksjon Denne guiden viser deg hvordan du oppretter og konfigurerer en Docker-sverm ved å bruke flere Alpine Linux 3.9.0-servere og Portainer. Vær oppmerksom på det

Distribuer en PHP-applikasjon ved å bruke Docker-compose

Distribuer en PHP-applikasjon ved å bruke Docker-compose

PHP-applikasjoner er vanligvis sammensatt av en webserver, et relasjonsdatabasesystem og selve språktolken. I denne opplæringen vil vi være leveragin

Lastbalanse med Docker

Lastbalanse med Docker

Når du kjører en nettapplikasjon, vil du vanligvis få mest mulig ut av ressursene dine uten å måtte konvertere programvaren til å bruke multithreading o

Distribuer en Node.js-applikasjon ved hjelp av Docker

Distribuer en Node.js-applikasjon ved hjelp av Docker

Denne artikkelen vil vise deg hvordan du distribuerer Node-applikasjonen din i en Docker-beholder. Merk: Denne opplæringen forutsetter at du har Docker installert og lest

Distribuer Kubernetes med Kubeadm på CentOS 7

Distribuer Kubernetes med Kubeadm på CentOS 7

Oversikt Denne artikkelen er ment å hjelpe deg med å få en Kubernetes-klynge i gang med kubeadm på kort tid. Denne veiledningen vil distribuere to servere på

Installere Docker CE på Debian 9

Installere Docker CE på Debian 9

Bruker du et annet system? Introduksjon Docker er en applikasjon som tillater distribusjon av programvare i virtuelle containere. Det ble skrevet i G

Kom i gang med SQL Server 2017 (MS-SQL) på CentOS 7 med Docker

Kom i gang med SQL Server 2017 (MS-SQL) på CentOS 7 med Docker

Forutsetninger Docker-motor 1.8+. Minimum 4 GB diskplass. Minimum 4 GB RAM. Trinn 1. Installer Docker For å installere SQL-Server må Docker mus

Sticky Session With Docker Swarm (CE) på Debian 9

Sticky Session With Docker Swarm (CE) på Debian 9

Bruker du et annet system? Innledning Docker Swarm gjør dine individuelle servere til en klynge av datamaskiner; lette skalering, høy tilgjengelighet og

Installer Rancher Server på RancherOS

Installer Rancher Server på RancherOS

Oversikt RancherOS er et utrolig lett operativsystem (bare ca. 60 MB) som kjører en system Docker-demon som PID 0 for å kjøre systemtjenester

Installer Rancher på Ubuntu 16.04

Installer Rancher på Ubuntu 16.04

Bruker du et annet system? Introduksjon Rancher er en åpen kildekode-plattform for å kjøre containere og bygge en privat containertjeneste. Rancher er base

Sett opp Sentry via Docker på Ubuntu 16.04

Sett opp Sentry via Docker på Ubuntu 16.04

Bruker du et annet system? Innledning Sentry er en åpen kildekode-løsning for feilsporing. Sentry sporer unntak og andre nyttige meldinger

Slik bruker du Docker: Opprett din første Docker-beholder

Slik bruker du Docker: Opprett din første Docker-beholder

Denne opplæringen forklarer det grunnleggende for å komme i gang med Docker. Jeg antar at du allerede har Docker installert. Trinnene i denne opplæringen vil fungere på en

Installere Docker på Ubuntu 14.04

Installere Docker på Ubuntu 14.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Sikker distribusjon og administrering av LXC-beholdere på Ubuntu 14.04

Sikker distribusjon og administrering av LXC-beholdere på Ubuntu 14.04

LXC-beholdere (Linux-beholdere) er en operativsystemfunksjon i Linux som kan brukes til å kjøre flere isolerte Linux-systemer på en enkelt vert. Thes

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer