CoreOS + Docker
Uusima registri tõmbamine ja käivitamine
Registri konfiguratsioon
Redis vahemällu salvestamine (valikuline)
Konteineri ehitamine
Konfigureerige oma kohalik Dockeri klient
Mis järgmiseks?
Me kõik teame ja armastame Dockerit – platvormi rakenduste konteinerite loomiseks, haldamiseks ja levitamiseks mitme masina vahel. Docker Inc. pakub teenust avatud lähtekoodiga konteinerite majutamiseks, mida saab alla laadida (või tõmmata), nagu git-hoidla, mida nimetatakse Dockeri registriks. Mõelge sellele nagu GitHub Dockeri konteinerite jaoks.
Aga mis siis, kui soovite majutada oma registrit avalikust eraldi? Noh, Docker Inc. on GitHubis oma registrirakenduse avatud lähtekoodiga hankinud.
See õpetus juhendab teid privaatse Dockeri registri seadistamise protsessis CoreOS-i abil uues VPS-is.
CoreOS + Docker
Me ei kuluta palju aega sellele, et täpselt uurida, mida Docker ja CoreOS teha saavad, kuna see jääb selle õpetuse raamest välja. Sisuliselt on CoreOS mõeldud massiivsetele serveriklastritele, see on väike, kiire ja saab regulaarselt turvavärskendusi automaatselt. Selle juurfailisüsteem on samuti kirjutuskaitstud, mis tähendab, et peate kasutama Dockerit mis tahes tarkvara käivitamiseks, mis pole põhiinstalliga kaasas.
See muudab Core OS-i Dockeri jaoks ideaalseks hostsüsteemiks!
Uusima registri tõmbamine ja käivitamine
Docker Inc. on andnud registri tipptasemel pildina, mis tähendab, et saame selle alla tõmmata lihtsa:
docker pull registry
This can take a few minutes depending on the connection speed.
Tipptaseme pildi pluss tähendab ka seda, et see saab regulaarselt tuge ja värskendusi.
Nüüd testime registrit. Registripildi abil saame luua uue konteineri:
docker run -p 5000:5000 -d --name=basic_registry registry
Neile, kes pole Dockerit liiga palju kasutanud, -p
tähistab lipp , mis tähendab PORT
, et me paljastame konteineri pordi 5000 hosti pordile 5000.
-d
Lipu tähistab daemon
, see põhjustab mahuti töötamine taustal, mitte printida väljundi praeguse SSH sessiooni tahame selle nime Põhiline katse konteiner kasutades --name
võimalust, nii et me saame kergesti hallata seda hiljem.
Veenduge, et teie põhiregistri konteiner töötab docker ps
. Väljund peaks välja nägema sarnane:
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
Külastage http://YOUR_IP:5000
ka oma veebibrauseris ja peaksite saama järgmise sõnumi:
"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.
Nüüd töötab teil oma (väga lihtne) konteineri register! Kuid me pole veel lõpetanud.
Võib-olla soovite hoida seda privaatselt võõraste pilkude eest või salvestada oma pilte kohaliku salvestusruumi asemel Amazon S3-sse. Vaatame järgmises jaotises erinevaid konfiguratsioonivalikuid.
Enne kui edasi liigume, tapame testkonteineri, et mitte sattuda vastuolulistesse portidesse.
docker kill basic_registry
Registri konfiguratsioon
Konfiguratsiooni saab Dockeri registrisse edastada kahel viisil. Üks võimalus on keskkonnamuutujate edastamine uude konteinerisse ja teine on konfiguratsioonifaili lisamine.
Siin on mõned levinumad konfiguratsioonisuvandid, mida me kasutame.
loglevel
- Konsooli logimiseks vajalik minimaalne teabe hulk. Vaikimisi on info
.
standalone
- Kas see register peaks tegutsema iseseisvalt? (Ei tee kunagi päringuid avalikust registrist.) Vaikimisi on true
.
index_endpoint
- Kui mitte eraldiseisvat indeksit, siis millist muud indeksit me päringuid teeme? Vaikimisi index.docker.io
.
cache
ja cache_lru
- valikud, mis on seotud Redise vahemälu kasutamisega väikeste failide jaoks, puudutame seda hiljem.
storage
- Millist salvestusruumi taustaprogrammi peaksime selle serveri jaoks kasutama? (Selles õpetuses kasutame kohalikku).
storage_path
- Kui kasutate kohalikku salvestusruumi, siis millist kataloogi peaksime failide hoidmiseks kasutama?
Enne konfiguratsiooniga töötamist vajame töötamiseks baasfaili. GitHubi Dockeri registrihoidlast pärit fail töötab hästi:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
Fail peaks edukalt salvestatud sellise väljundiga nagu:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
Suurepärane! Nüüd saame seda faili oma vajadustele vastavaks muuta.
Ainus Core OS-iga kaasas olev tekstiredaktor on vim
, kuid ärge muretsege, kui te pole seda kunagi varem kasutanud. See selgitab samm-sammult, mida ja kuidas redigeerida.
vim config_sample.yml
Kui olete faili avanud, vajutage nuppu I
ja paremas alanurgas peaks kuvama: -- INSERT --
sisestusrežiimi jaoks. Kerige nooleklahvide abil faili lõpuni, peaksite nägema jaotist sildiga prod
.
Muudame kahte rida, muudatused on allpool
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
Oleme muutnud prod
konfiguratsiooni nii, et see tuletaks local
jaotisest jaotise asemel s3
. Seejärel kirjutasime uue konteineri sees oleva storage_path
tee kasutamiseks üle /data
.
Kui olete kinnitanud, et kõik muudatused on õiged, vajutage ESC
sisestusrežiimist väljumiseks ja tippige :wq
(see tähendab, et kirjutage muudatused faili ja sulgege vim.)
Nüüd nimetame faili ümber lihtsalt config.yml
mv config_sample.yml config.yml
Redis vahemällu salvestamine (valikuline)
Kui soovite konteineriregistri kiirendamiseks kasutada redis't, on see sama lihtne kui tõmmata avalikust registrist uus konteiner ja lisada veel paar konfiguratsioonirida.
Esmalt tõmmake Redise ülataseme pilt:
docker pull redis
Kui pilt on edukalt tõmmatud, saame selle käivitada ja anda sellele nime nagu testregistri puhul:
docker run -d --name registry-redis redis
Kuna redis on mälus, ei pea me selle jaoks konfigureerima, kuna lingime selle hilisemates sammudes registrikonteineriga.
Veel kord veenduge, et see töötab, kasutades 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
Nüüd uuesti avada config.yml
in vim
ja sisestage sisestada režiim nagu esimene kord, kui me muuta seda.
Lisage prod
jaotise alla järgmised read , tehes kindlasti õige taande. Seekord lisame ainult cache
ja 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
Keskkonnamuutujad REDIS_PORT_6379_TCP_ADDR
ja REDIS_PORT_6379_TCP_PORT
edastatakse Redise konteineriga linkimisel registri konteinerisse.
Sellega olete nüüd seadistanud Redise konteineri, mis töötab käsikäes teie registrikonteineriga. Nüüd registri loomise juurde!
Konteineri ehitamine
Meil on kõik konfiguratsioonid seatud ja valmis, nüüd peame koostama tegeliku registrikonteineri.
Käivita vim Dockerfile
uue Dockerfile. Sisenege lisamisrežiimi ja järgige allolevaid muudatusi.
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
See, mida me eespool tegime, on sisuliselt registripildi laiendamine, nii et see kasutaks meie konfiguratsioonifaili ja sätteid. Dockerfile on koostamisjuhiste komplekt, mida Docker saab lugeda ja ehitada. Kui soovite Dockerfailide ja nende süntaksi kohta rohkem teada saada, vaadake ametlikku Dockeri saidi dokumentatsiooni.
Järgmisena peame ehitama konteineri kasutamiseks.
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üüd oleme valmis jooksma!
Teeme oma hostsüsteemis kataloogi, mis mahutisse /data
mahuna paigaldatakse.
mkdir registry-data
Nüüd saame uue konteineri keerata. Kui kavatsete kasutada Redise vahemälu, kasutage allolevat teist käsku.
# 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
Serveri korrektse töötamise tagamiseks külastage http://YOUR_IP:5000
. Näete järgmist teadet:
"docker-registry server (prod) (v0.8.1)"
Pange tähele, et (prod)
meie konfiguratsioonimuudatused olid edukad!
Nüüd, kui meil on oma töötav register, tahame, et meie kohalikes masinates asuv Dockeri klient hakkaks seda kasutama. Tavaliselt kasutaksite käsku: docker login
, kuid meie jaoks peame sisselogimiskäsule lisama veel ühe argumendi:
docker login YOUR_IP:5000
Sisestage kasutajanimi ja parool (mõelge sellele nagu uue konto loomine) ning ignoreerige sõnumit, mis ütleb, et peate selle aktiveerima.
Järgmisena tõmbame pildimaterjali ja lükkame selle üles meie enda hoidlasse.
# 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
Kui kõik liigub õigesti, peaks viimane teade olema järgmine:
Pushing tag for rev [a9eb17255234] on
Palju õnne! Olete seadistanud oma dokkeri hoidla.
Mis järgmiseks?
Siin on mõned ideed, kuidas oma uut privaatset registrit täiustada.
- Pöörake puhverserverit Nginxi või Apache'i abil, et asetada sellele lisaturvalisus, näiteks lihtne HTTP autentimine.
- Hankige oma serverile domeen ja seadistage see, et pääseksite oma registrile juurde järgmiselt: registry.mysite.com
- Ostke (või allkirjastage ise) SSL-sertifikaat, et lisada veelgi rohkem kaitset, kui teie konteinerid sisaldavad tundlikku teavet.