CoreOS + Docker
Draga og keyra nýjustu skrásetninguna
Uppsetning skrásetningar
Redis skyndiminni (valfrjálst)
Byggja gáminn
Stilltu Docker viðskiptavin þinn á staðnum
Hvað er næst?
Við þekkjum öll og elskum Docker, vettvang til að búa til, stjórna og dreifa forritagámum yfir margar vélar. Docker Inc. veitir þjónustu til að hýsa opna gáma sem hægt er að hlaða niður (eða draga) eins og git geymsla sem kallast „Docker Registry“. Hugsaðu um það eins og GitHub fyrir Docker gáma.
En hvað ef þú vilt hýsa þína eigin skrásetning aðskilin frá hinni opinberu? Jæja, Docker Inc. hefur opið skráningarforrit sitt á GitHub.
Þessi kennsla mun taka þig í gegnum ferlið við að setja upp einka Docker skrásetningu með CoreOS á nýjum VPS.
CoreOS + Docker
Við munum ekki eyða miklum tíma í að fara yfir nákvæmlega hvað Docker og CoreOS geta gert, þar sem það er utan gildissviðs þessarar kennslu. Í meginatriðum er CoreOS hannað fyrir stóra netþjónaklasa, það er lítið, hratt og fær reglulegar öryggisuppfærslur sjálfkrafa. Rótarskráarkerfi þess er líka skrifvarið, sem þýðir að þú verður að nota Docker til að keyra hvers kyns hugbúnað sem er ekki innifalinn í grunnuppsetningunni.
Þetta gerir Core OS að fullkomnu gestgjafakerfi fyrir Docker!
Draga og keyra nýjustu skrásetninguna
Docker Inc. hefur útvegað Registry sem mynd á efstu stigi, þetta þýðir að við getum dregið hana niður með einföldu:
docker pull registry
This can take a few minutes depending on the connection speed.
Plús að vera mynd á efsta stigi þýðir líka að hún fær reglulegan stuðning og uppfærslur.
Nú skulum við prófa skrásetninguna. Við getum búið til nýjan ílát með því að nota skrásetningarmyndina:
docker run -p 5000:5000 -d --name=basic_registry registry
Fyrir þá sem hafa ekki notað Docker of mikið, -p
stendur fáninn fyrir PORT
, sem þýðir að við erum að afhjúpa höfn 5000 frá gámnum á hýsilhöfn 5000.
The -d
fána stendur fyrir daemon
, þetta mun valda gámur til að keyra í bakgrunni og ekki prenta framleiðsla á núverandi SSH fundur, viljum við einnig að nefna þessa undirstöðu próf ílátið með því að nota --name
valkostinn þannig að við getum auðveldlega stjórnað henni síðar.
Gakktu úr skugga um að grunnskráarílátið þitt sé í gangi með docker ps
. Úttakið ætti að líta svipað út og:
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
Farðu líka http://YOUR_IP:5000
í vafranum þínum og þú ættir að fá skilaboð eins og eftirfarandi:
"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.
Þú ert nú með þína eigin (mjög einföldu) gámaskrá í gangi! En við erum ekki búnir ennþá.
Kannski viltu halda þessu persónulega frá hnýsnum augum, eða kannski geyma myndirnar þínar á Amazon S3 í stað staðbundinnar geymslu. Við skulum fara yfir hina ýmsu stillingarvalkosti í næsta kafla.
Áður en við höldum áfram skulum við drepa prófgáminn svo að við lendum ekki í höfnum sem stangast á.
docker kill basic_registry
Uppsetning skrásetningar
Það eru tvær leiðir sem við getum sent stillingar til Docker Registry. Ein leiðin er með því að senda umhverfisbreytur í nýjan gám og hin er að bæta við stillingarskrá.
Hér eru nokkrir af algengum stillingarvalkostum sem við munum nota:
loglevel
- Lágmarks magn upplýsinga til að skrá þig inn á stjórnborðið. Sjálfgefið er info
.
standalone
- Ætti þessi skrásetning að starfa á eigin spýtur? (Aldrei spyrjast fyrir um opinbera skrásetninguna.) Sjálfgefið er true
.
index_endpoint
- Ef ekki sjálfstæð, hvaða aðra vísitölu munum við spyrjast fyrir? Sjálfgefið index.docker.io
.
cache
og cache_lru
- Valkostir sem tengjast notkun Redis skyndiminni fyrir litlar skrár, við munum snerta þetta síðar.
storage
- Hvaða geymslustuðning ættum við að nota fyrir þennan netþjón? (Í þessari kennslu munum við nota staðbundið).
storage_path
- Ef þú notar staðbundna geymslu, hvaða möppu ættum við að nota til að geyma skrár í?
Áður en við förum að vinna með uppsetninguna þurfum við grunnskrá til að vinna með. Skráin frá Docker Registry geymslunni á GitHub mun virka vel:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
Skráin ætti að vista með góðum árangri með úttak eins og:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
Frábært! Nú getum við breytt þessari skrá til að passa þarfir okkar.
Eini textaritillinn sem fylgir Core OS er vim
, en ekki hafa áhyggjur ef þú hefur aldrei notað hann áður, þetta mun útskýra skref fyrir skref hverju á að breyta og hvernig á að gera það.
vim config_sample.yml
Þegar þú hefur opnað skrána skaltu ýta á I
og neðst í hægra horninu ætti að birtast: -- INSERT --
fyrir innsetningarham. Skrunaðu alla leið til botns í skránni með því að nota örvatakkana þína, þú ættir að sjá hluta merktan prod
.
Við munum breyta línunum tveimur, breytingarnar eru hér að neðan
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
Það sem við höfum gert er að breyta prod
stillingunum þannig að hún komi frá local
hlutanum í stað s3
hlutans. Síðan skrifuðum við yfir storage_path
að nota slóðina /data
inni í nýja gámnum.
Þegar þú hefur staðfest að allar breytingar séu réttar skaltu ýta á ESC
til að hætta innsetningarham og slá inn :wq
(það þýðir að skrifa breytingarnar á skrána og hætta vim.)
Nú skulum við endurnefna skrána í bara config.yml
mv config_sample.yml config.yml
Redis skyndiminni (valfrjálst)
Ef þú vilt nota redis til að flýta fyrir gámaskránni þinni, þá er það eins einfalt og að draga nýjan gám úr opinberu skránni og bæta við nokkrum fleiri línum af stillingum.
Fyrst skaltu draga efstu myndina af Redis:
docker pull redis
Þegar myndin hefur verið dregin með góðum árangri getum við keyrt hana og nefnt hana alveg eins og við gerðum með prófunarskránni:
docker run -d --name registry-redis redis
Vegna þess að redis er í minni, þurfum við ekki að gera neinar stillingar fyrir það, þar sem við munum tengja það við skrásetningarílátið í síðari skrefum.
Enn og aftur, vertu viss um að það sé í gangi með því að nota 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
Opnaðu nú aftur config.yml
inn vim
og farðu í innsetningarham eins og í fyrsta skipti sem við breyttum því.
Bættu við eftirfarandi línum fyrir neðan prod
hlutann og vertu viss um að draga rétt inn. Að þessu sinni bætum við aðeins við cache
og 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
Umhverfisbreyturnar REDIS_PORT_6379_TCP_ADDR
og REDIS_PORT_6379_TCP_PORT
eru sendar til skrásetningarílátsins við tengingu við Redis gáminn.
Með því hefurðu nú sett upp Redis gám sem mun vinna í hendur við skrásetningarílátið þitt. Nú á að byggja upp skrásetninguna!
Byggja gáminn
Við höfum allar stillingar settar og tilbúnar, nú þurfum við að smíða raunverulegan skrásetningarílát.
Eldur upp vim Dockerfile
til að búa til nýja Dockerfile. Farðu í innsetningarstillingu og fylgdu breytingunum hér að neðan.
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
Það sem við höfum gert hér að ofan er í raun að lengja skrásetningarmyndina svo hún noti stillingarskrána okkar og stillingar. Dockerfile er sett af byggingarleiðbeiningum fyrir Docker til að lesa og smíða. Ef þú vilt læra meira um Dockerfiles og setningafræði þeirra, skoðaðu opinberu Docker síðuna.
Næst þurfum við að smíða gáminn til notkunar.
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ú erum við tilbúin að hlaupa!
Við skulum búa til möppu á hýsingarkerfinu okkar til að festa í ílátið sem /data
hljóðstyrk.
mkdir registry-data
Nú getum við snúið upp nýjum íláti. Ef þú ætlar að nota Redis skyndiminni skaltu nota 2. skipunina hér að neðan.
# 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
Til að tryggja að þjónninn þinn sé í gangi rétt skaltu fara á http://YOUR_IP:5000
. Þú munt sjá eftirfarandi skilaboð:
"docker-registry server (prod) (v0.8.1)"
Taktu eftir (prod)
merkingu stillingabreytinga okkar tókst!
Nú þegar við erum með okkar eigin hlaupandi skráningu viljum við að Docker viðskiptavinurinn á staðbundnum vélum okkar byrji að nota hann. Venjulega myndir þú nota skipunina: docker login
, en fyrir okkar notkun þurfum við að bæta einu rökum í viðbót við innskráningarskipunina:
docker login YOUR_IP:5000
Sláðu inn notandanafn og lykilorð (hugsaðu þetta eins og að búa til nýjan reikning) og hunsa skilaboðin sem segja að þú verðir að virkja hann.
Næst skulum við draga hlutabréfamynd og ýta henni upp í okkar eigin geymslu.
# 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
Ef allt ýtir á réttan hátt ættu lokaskilaboðin að vera á þessa leið:
Pushing tag for rev [a9eb17255234] on
Til hamingju! Þú hefur sett upp þína eigin docker geymslu.
Hvað er næst?
Hér eru nokkrar hugmyndir um hvernig á að bæta nýju einkaskrána þína:
- Reverse proxy með því að nota Nginx eða Apache til að setja aukið öryggi fyrir framan það, eins og einföld HTTP auðkenning.
- Fáðu lén fyrir netþjóninn þinn og settu það upp svo þú getir fengið aðgang að skránni þinni með einhverju eins og: registry.mysite.com
- Kauptu (eða undirritaðu sjálf) SSL vottorð til að bæta við enn meiri vernd ef ílátin þín innihalda viðkvæmar upplýsingar.