CoreOS + Docker
Jaunākā reģistra izvilkšana un palaišana
Reģistra konfigurācija
Atkārtota kešatmiņa (pēc izvēles)
Konteinera būvēšana
Konfigurējiet savu vietējo Docker klientu
Ko tālāk?
Mēs visi zinām un mīlam Docker — platformu lietojumprogrammu konteineru izveidei, pārvaldībai un izplatīšanai vairākās iekārtās. Docker Inc. nodrošina lejupielādējamo (vai izvelkamo) atvērtā pirmkoda konteineru mitināšanas pakalpojumu, piemēram, git repozitoriju, kas pazīstams kā "Docker Registry". Padomājiet par to kā par GitHub Docker konteineriem.
Bet ko darīt, ja vēlaties mitināt savu reģistru, kas ir atdalīts no publiskā? Nu, Docker Inc. ir atvērta pirmkoda reģistra lietojumprogramma vietnē GitHub.
Šī apmācība palīdzēs jums izveidot privātu Docker reģistru, izmantojot CoreOS jaunā VPS.
CoreOS + Docker
Mēs netērēsim daudz laika, lai pārdomātu, ko tieši Docker un CoreOS spēj paveikt, jo tas neietilpst šīs apmācības ietvaros. Būtībā CoreOS ir paredzēts masveida serveru klasteriem, tas ir mazs, ātrs un automātiski saņem regulārus drošības atjauninājumus. Tās saknes failu sistēma ir arī tikai lasāma, kas nozīmē, ka jums ir jāizmanto Docker, lai palaistu jebkāda veida programmatūru, kas nav iekļauta pamata instalācijā.
Tas padara Core OS par ideālu Docker resursdatora sistēmu!
Jaunākā reģistra izvilkšana un palaišana
Docker Inc. ir nodrošinājis reģistru kā augstākā līmeņa attēlu, tas nozīmē, ka mēs varam to noņemt, veicot vienkāršu:
docker pull registry
This can take a few minutes depending on the connection speed.
Augstākā līmeņa attēla pluss nozīmē arī to, ka tas saņem regulāru atbalstu un atjauninājumus.
Tagad izmēģināsim reģistru. Mēs varam izveidot jaunu konteineru, izmantojot reģistra attēlu:
docker run -p 5000:5000 -d --name=basic_registry registry
Tiem, kuri nav izmantojuši Docker pārāk daudz, -p
karodziņš apzīmē PORT
, kas nozīmē, ka mēs pakļaujam 5000. portu no konteinera uz resursdatora portu 5000.
-d
Karogs nozīmē daemon
, tas radīs konteiners darboties fonā un nevar drukāt izejas uz pašreizējo SSH sesiju, mēs arī vēlamies nosaukt šo pamata testa konteineru, izmantojot --name
iespēju, lai mēs varētu viegli pārvaldīt to vēlāk.
Pārliecinieties, vai jūsu pamata reģistra konteiners darbojas, izmantojot docker ps
. Izvadei vajadzētu izskatīties līdzīgi:
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
Apmeklējiet http://YOUR_IP:5000
arī savā tīmekļa pārlūkprogrammā, un jums vajadzētu saņemt šādu ziņojumu:
"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.
Tagad jums darbojas savs (ļoti vienkāršs) konteineru reģistrs! Bet mēs vēl neesam pabeiguši.
Varbūt vēlaties to aizsargāt no ziņkārīgo acīm vai saglabāt attēlus vietnē Amazon S3, nevis vietējā krātuvē. Nākamajā sadaļā apskatīsim dažādas konfigurācijas opcijas.
Pirms ejam tālāk, nogalināsim testa konteineru, lai nesanāktu konfliktējošās pieslēgvietās.
docker kill basic_registry
Reģistra konfigurācija
Ir divi veidi, kā mēs varam nodot konfigurāciju Docker reģistram. Viens veids ir vides mainīgo nodošana jaunam konteineram, bet otrs ir konfigurācijas faila pievienošana.
Šeit ir dažas no izplatītākajām konfigurācijas opcijām, kuras mēs izmantosim:
loglevel
- Minimālais informācijas apjoms, kas jāpiesakās konsolē. Noklusējums ir info
.
standalone
- Vai šim reģistram būtu jārīkojas pašam? (Nekad neprasa publisko reģistru.) Noklusējums ir true
.
index_endpoint
- Ja ne atsevišķs rādītājs, kādu citu indeksu mēs pieprasīsim? Noklusējums index.docker.io
.
cache
un cache_lru
- Opcijas, kas attiecas uz Redis kešatmiņas izmantošanu maziem failiem. Mēs to aplūkosim vēlāk.
storage
- Kādu krātuves aizmugursistēmu vajadzētu izmantot šim serverim? (Šajā apmācībā mēs izmantosim vietējo).
storage_path
- Ja izmantojat vietējo krātuvi, kurā direktorijā ir jāizmanto faili?
Pirms sākam strādāt ar konfigurāciju, mums ir nepieciešams bāzes fails, ar kuru strādāt. Fails no Docker reģistra repozitorija vietnē GitHub darbosies lieliski:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
Fails ir veiksmīgi jāsaglabā ar tādu izvadi kā:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
Lieliski! Tagad mēs varam modificēt šo failu, lai tas atbilstu mūsu vajadzībām.
Vienīgais teksta redaktors, kas tiek piegādāts kopā ar Core OS, ir vim
, taču neuztraucieties, ja jūs to nekad iepriekš neesat izmantojis. Šeit soli pa solim tiks paskaidrots, ko rediģēt un kā to izdarīt.
vim config_sample.yml
Kad fails ir atvērts, nospiediet I
un apakšējā labajā stūrī vajadzētu parādīties: -- INSERT --
ievietošanas režīmam. Ritiniet līdz faila apakšdaļai, izmantojot bulttaustiņus; jums vajadzētu redzēt sadaļu ar nosaukumu prod
.
Mēs mainīsim abas rindiņas, izmaiņas ir norādītas zemāk
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
Mēs esam mainījuši prod
konfigurāciju, lai to iegūtu no local
sadaļas, nevis s3
sadaļas. Pēc tam mēs pārrakstījām, storage_path
lai izmantotu ceļu /data
jaunajā konteinerā.
Kad esat apstiprinājis, ka visas izmaiņas ir pareizas, nospiediet , ESC
lai izietu no ievietošanas režīma un ierakstiet :wq
(tas nozīmē, ierakstiet izmaiņas failā un aizveriet vim).
Tagad pārdēvēsim failu uz tikai config.yml
mv config_sample.yml config.yml
Atkārtota kešatmiņa (pēc izvēles)
Ja vēlaties izmantot redis, lai paātrinātu konteinera reģistru, tas ir tik vienkārši, kā izņemt jaunu konteineru no publiskā reģistra un pievienot vēl dažas konfigurācijas rindas.
Vispirms izvelciet Redis augšējā līmeņa attēlu:
docker pull redis
Kad attēls ir veiksmīgi izvilkts, mēs varam to palaist un nosaukt tāpat kā ar testa reģistru:
docker run -d --name registry-redis redis
Tā kā redis atrodas atmiņā, mums nav jāveic nekāda konfigurācija, jo mēs to saistīsim ar reģistra konteineru turpmākajās darbībās.
Vēlreiz pārliecinieties, ka tas darbojas, izmantojot 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
Tagad no jauna atvērtu config.yml
in vim
un ievadiet ievietot režīmā, tāpat kā mēs pirmo reizi rediģēja to.
Pievienojiet tālāk norādītās rindiņas zem prod
sadaļas, pārliecinieties, ka tās ir pareizi atkāpes. Šoreiz mēs tikai pievienojam cache
un 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
Vides mainīgie REDIS_PORT_6379_TCP_ADDR
un REDIS_PORT_6379_TCP_PORT
tiek nodoti reģistra konteineram pēc saistīšanas ar Redis konteineru.
Tādējādi tagad esat iestatījis Redis konteineru, kas darbosies roku rokā ar jūsu reģistra konteineru. Tagad pie reģistra izveides!
Konteinera būvēšana
Mums ir iestatīta visa konfigurācija, un tagad mums ir jāizveido faktiskais reģistra konteiners.
Fire up vim Dockerfile
, lai izveidotu jaunu Dockerfile. Ieejiet ievietošanas režīmā un izpildiet tālāk norādītos labojumus.
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
Tas, ko esam paveikuši iepriekš, būtībā ir paplašinājuši reģistra attēlu, lai tas izmantotu mūsu konfigurācijas failu un iestatījumus. Dockerfile ir veidošanas instrukciju kopums, ko Docker var lasīt un veidot. Ja vēlaties uzzināt vairāk par Dockerfiles un to sintaksi, skatiet oficiālo Docker vietnes dokumentāciju.
Tālāk mums ir jāizveido konteiners lietošanai.
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
Tagad esam gatavi skriet!
Izveidosim direktoriju mūsu resursdatora sistēmā, ko ievietot konteinerā kā /data
sējumu.
mkdir registry-data
Tagad mēs varam izveidot jaunu konteineru. Ja plānojat izmantot Redis kešatmiņu, izmantojiet tālāk esošo 2. komandu.
# 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
Lai pārliecinātos, ka jūsu serveris darbojas pareizi, apmeklējiet http://YOUR_IP:5000
. Jūs redzēsit šādu ziņojumu:
"docker-registry server (prod) (v0.8.1)"
Ņemiet vērā, (prod)
ka mūsu konfigurācijas izmaiņas bija veiksmīgas!
Tagad, kad mums ir savs darbojošais reģistrs, mēs vēlamies, lai Docker klients mūsu vietējās iekārtās sāktu to lietot. Parasti jūs izmantotu komandu: docker login
, bet mūsu lietošanai pieteikšanās komandai jāpievieno vēl viens arguments:
docker login YOUR_IP:5000
Ievadiet lietotājvārdu un paroli (domājiet par to kā par jauna konta izveidi) un ignorējiet ziņojumu, kurā teikts, ka tas ir jāaktivizē.
Pēc tam izvelkam krājuma attēlu un virzīsim to uz mūsu pašu krātuvi.
# 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
Ja viss notiek pareizi, galīgajam ziņojumam jābūt šādam:
Pushing tag for rev [a9eb17255234] on
Apsveicam! Jūs esat iestatījis savu docker repozitoriju.
Ko tālāk?
Šeit ir dažas idejas, kā uzlabot savu jauno privāto reģistru:
- Apgrieziet starpniekserveri, izmantojot Nginx vai Apache, lai novietotu tai priekšā papildu drošību, piemēram, vienkāršu HTTP autentifikāciju.
- Iegūstiet savam serverim domēnu un iestatiet to, lai varētu piekļūt savam reģistram, izmantojot kaut ko līdzīgu: registry.mysite.com
- Iegādājieties (vai pašparakstieties) SSL sertifikātu, lai nodrošinātu vēl lielāku aizsardzību, ja jūsu konteineros ir sensitīva informācija.