CoreOS + Docker
Uusimman rekisterin vetäminen ja suorittaminen
Rekisterin määritykset
Redis-välimuisti (valinnainen)
Kontin rakentaminen
Määritä paikallinen Docker-asiakas
Mitä seuraavaksi?
Me kaikki tiedämme ja rakastamme Dockeria, alustaa sovellussäilöjen luomiseen, hallintaan ja jakamiseen useille koneille. Docker Inc. tarjoaa palvelun, joka isännöi ladattavia (tai noudettavia) avoimen lähdekoodin säilöjä, kuten "Docker Registry" -nimistä git-tietovarastoa. Ajattele sitä kuin GitHubia Docker-säiliöille.
Mutta entä jos haluat isännöidä omaa rekisteriäsi erotettuna julkisesta? No, Docker Inc. on hankkinut avoimen lähdekoodin rekisterisovelluksensa GitHubissa.
Tämä opetusohjelma opastaa sinua yksityisen Docker-rekisterin määrittämisessä CoreOS:n avulla uudessa VPS:ssä.
CoreOS + Docker
Emme käytä paljon aikaa sen tarkasteluun, mitä Docker ja CoreOS voivat tehdä, koska se ei kuulu tämän opetusohjelman piiriin. Pohjimmiltaan CoreOS on suunniteltu suurille palvelinklusteille, se on pieni, nopea ja saa säännölliset tietoturvapäivitykset automaattisesti. Sen juuritiedostojärjestelmä on myös vain luku -tilassa, mikä tarkoittaa, että sinun on käytettävä Dockeria kaikenlaisten ohjelmistojen suorittamiseen, joita ei sisälly perusasennukseen.
Tämä tekee Core OS:stä täydellisen isäntäjärjestelmän Dockerille!
Uusimman rekisterin vetäminen ja suorittaminen
Docker Inc. on toimittanut rekisterin huipputason kuvana, mikä tarkoittaa, että voimme vetää sen alas yksinkertaisella:
docker pull registry
This can take a few minutes depending on the connection speed.
Huipputason kuvan plussa tarkoittaa myös sitä, että se saa säännöllistä tukea ja päivityksiä.
Testataan nyt rekisteriä. Voimme luoda uuden säilön käyttämällä rekisteriotosta:
docker run -p 5000:5000 -d --name=basic_registry registry
Niille, jotka eivät ole käyttäneet Dockeria liikaa, -p
lippu tarkoittaa PORT
, mikä tarkoittaa, että paljastamme portin 5000 säiliöstä isäntäporttiin 5000.
-d
Lippu tarkoittaa daemon
, tämä aiheuttaa säiliön toimimaan taustalla eikä tulostusjäljen nykyiseen SSH-istunto, haluamme myös nimetä tämän tapa testata, jossa käytetään edellä --name
vaihtoehto, jotta voimme helposti hallita sitä myöhemmin.
Varmista, että perusrekisterisäiliössäsi on käytössä docker ps
. Tulosteen pitäisi näyttää samanlaiselta:
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
Vieraile http://YOUR_IP:5000
myös selaimessasi, niin sinun pitäisi saada seuraavanlainen viesti:
"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.
Sinulla on nyt oma (erittäin yksinkertainen) konttirekisteri käynnissä! Mutta emme ole vielä valmiita.
Ehkä haluat pitää tämän yksityisenä uteliailta katseilta tai ehkä tallentaa kuvasi Amazon S3:lle paikallisen tallennustilan sijaan. Käydään läpi eri konfigurointivaihtoehdot seuraavassa osiossa.
Ennen kuin siirrymme eteenpäin, tapetaan testisäiliö, jotta emme törmää ristiriitaisiin portteihin.
docker kill basic_registry
Rekisterin määritykset
On kaksi tapaa, joilla voimme siirtää asetukset Docker-rekisteriin. Yksi tapa on siirtää ympäristömuuttujat uuteen säilöön ja toinen on lisätä määritystiedosto.
Tässä on joitain yleisimmistä käyttämistämme määritysvaihtoehdoista:
loglevel
- Konsoliin kirjattavien tietojen vähimmäismäärä. Oletus on info
.
standalone
- Pitäisikö tämän rekisterin toimia itsenäisesti? (Ei koskaan kysy julkista rekisteriä.) Oletus on true
.
index_endpoint
- Jos ei erillistä indeksiä, mistä muusta hakemistosta teemme kyselyn? Oletus index.docker.io
.
cache
ja cache_lru
- Vaihtoehdot, jotka liittyvät Redis-välimuistin käyttöön pienille tiedostoille, käsittelemme tätä myöhemmin.
storage
- Mitä tallennustaustajärjestelmää meidän tulisi käyttää tälle palvelimelle? (Tässä opetusohjelmassa käytämme paikallista).
storage_path
- Jos käytät paikallista tallennustilaa, mitä hakemistoa meidän tulee käyttää tiedostojen säilyttämiseen?
Ennen kuin alamme työskennellä kokoonpanon kanssa, tarvitsemme perustiedoston. GitHubin Docker Registry -tietovaraston tiedosto toimii hyvin:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
Tiedoston pitäisi tallentaa onnistuneesti tulosteella, kuten:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
Loistava! Nyt voimme muokata tätä tiedostoa tarpeidemme mukaan.
Ainoa Core OS:n mukana vim
tuleva tekstieditori on , mutta älä huoli, jos et ole koskaan käyttänyt sitä ennen. Tämä selittää vaihe vaiheelta, mitä muokata ja miten se tehdään.
vim config_sample.yml
Kun olet avannut tiedoston, paina I
ja oikeassa alakulmassa pitäisi näkyä: -- INSERT --
lisäystilaa varten. Vieritä tiedoston alaosaan nuolinäppäimillä, sinun pitäisi nähdä osio, jonka nimi on prod
.
Muutamme kaksi riviä, muutokset ovat alla
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
Olemme muuttaneet prod
kokoonpanon siten, että ne johdetaan local
osiosta osion sijaan s3
. Sitten kirjoitimme storage_path
päälle käyttämään polkua /data
uuden säilön sisällä.
Kun olet varmistanut, että kaikki muutokset ovat oikein, paina ESC
poistuaksesi lisäystilasta ja kirjoita :wq
(tämä tarkoittaa, että kirjoita muutokset tiedostoon ja sulje vim.)
Nimetään nyt tiedosto uudelleen nimeksi vain config.yml
mv config_sample.yml config.yml
Redis-välimuisti (valinnainen)
Jos haluat käyttää redis nopeuttaaksesi säilörekisteriäsi, se on yhtä helppoa kuin vetää uusi säilö julkisesta rekisteristä ja lisätä muutama määritysrivi.
Vedä ensin Rediksen ylimmän tason kuva:
docker pull redis
Kun kuva on vedetty onnistuneesti, voimme ajaa sen ja nimetä sen aivan kuten teimme testirekisterin kanssa:
docker run -d --name registry-redis redis
Koska redis on muistissa, meidän ei tarvitse tehdä sille mitään asetuksia, koska linkitämme sen rekisterisäilöön myöhemmissä vaiheissa.
Varmista vielä kerran, että se toimii käyttämällä 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
Nyt avata uudelleen config.yml
vuonna vim
ja anna lisäystilassa aivan ensimmäistä kertaa muokata sitä.
Lisää seuraavat rivit prod
osion alle ja muista sisentää oikein. Tällä kertaa lisäämme vain 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
Ympäristömuuttujat REDIS_PORT_6379_TCP_ADDR
ja REDIS_PORT_6379_TCP_PORT
välitetään rekisterisäilöön linkitettäessä Redis-säilöä.
Sen avulla olet nyt määrittänyt Redis-säilön, joka toimii käsi kädessä rekisterisäilön kanssa. Nyt rekisterin rakentamiseen!
Kontin rakentaminen
Meillä on kaikki asetukset valmiina, nyt meidän on rakennettava varsinainen rekisterisäilö.
Käynnistä vim Dockerfile
luodaksesi uuden Docker-tiedoston. Siirry lisäystilaan ja seuraa alla olevia muokkauksia.
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
Yllä teimme olennaisesti rekisterikuvan laajentamisen, jotta se käyttää määritystiedostoamme ja asetuksiamme. Dockerfile on joukko rakennusohjeita, joita Docker voi lukea ja rakentaa. Jos haluat oppia lisää Docker-tiedostoista ja niiden syntaksista, katso virallinen Docker-sivuston dokumentaatio.
Seuraavaksi meidän on rakennettava kontti käyttöä varten.
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
Nyt olemme valmiita juoksemaan!
Tehdään isäntäjärjestelmäämme hakemisto, joka liitetään säilöön /data
taltioksi.
mkdir registry-data
Nyt voimme pyörittää uutta konttia. Jos aiot käyttää Redis-välimuistia, käytä alla olevaa toista komentoa.
# 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
Varmista, että palvelimesi toimii oikein, käy osoitteessa http://YOUR_IP:5000
. Näet seuraavan viestin:
"docker-registry server (prod) (v0.8.1)"
Huomaa, että (prod)
kokoonpanomuutoksemme onnistuivat!
Nyt kun meillä on oma käynnissä oleva rekisterimme, haluamme paikallisten koneidemme Docker-asiakkaan alkavan käyttää sitä. Yleensä käyttäisit komentoa: docker login
, mutta meidän käyttömme varten meidän on lisättävä sisäänkirjautumiskomentoon vielä yksi argumentti:
docker login YOUR_IP:5000
Anna käyttäjätunnus ja salasana (ajattele tätä kuin uuden tilin luomista) ja jätä huomioimatta viesti, jonka mukaan sinun on aktivoitava se.
Otetaan seuraavaksi arkistokuva ja työnnetään se omaan arkistoon.
# 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
Jos kaikki toimii oikein, viimeisen viestin tulisi olla seuraavanlainen:
Pushing tag for rev [a9eb17255234] on
Onnittelut! Olet määrittänyt oman telakointivaraston.
Mitä seuraavaksi?
Tässä on ideoita uuden yksityisen rekisterin parantamiseen:
- Käännä välityspalvelin Nginxiä tai Apachea käyttämällä lisäsuojauksen asettamiseen sen eteen, kuten yksinkertainen HTTP-todennus.
- Hanki verkkotunnus palvelimellesi ja määritä se, jotta voit käyttää rekisteriäsi jollakin tavalla: registry.mysite.com
- Osta (tai allekirjoita itse) SSL-varmenne lisätäksesi entistä enemmän suojaa, jos säilösi sisältävät arkaluonteisia tietoja.