Ievads
Priekšnoteikumi
Izvietošana
Instalējiet Alpine Linux 3.9.0 serveros
Servera konfigurācija pēc instalēšanas
Instalējiet Docker savos serveros
Inicializējiet Docker baru ar vienu pārvaldnieka mezglu un vienu darbinieka mezglu
Izvietojiet Portainer ar SSL, lai pārvaldītu savu Docker baru
Ievads
Šajā rokasgrāmatā ir parādīts, kā izveidot un konfigurēt Docker spietu, izmantojot vairākus Alpine Linux 3.9.0 serverus un Portainer. Lūdzu, ņemiet vērā, ka Vultr piedāvā One-Click Docker lietotni, kas pašlaik atbalsta gan CentOS 7 x64, gan Ubuntu 16.04 x64.
Priekšnoteikumi
Lai sāktu, jums būs nepieciešami vismaz divi VC2 serveri, kuros darbojas Alpine Linux 3.9.0. Jūsu Docker barā viens no šiem serveriem darbosies kā manager node
saskarne ar ārējiem tīkliem un deleģēs darbus darbinieku mezgliem. Pēc tam otrs serveris darbosies kā worker node
- izpildes uzdevumus, ko tam deleģējis pārvaldnieka mezgls.
Ņemiet vērā, ka varat palaist vairāk nekā divus serverus, ja jūsu lietojumprogrammai ir nepieciešama dublēšana un/vai lielāka skaitļošanas jauda, un šajā rokasgrāmatā norādītās darbības joprojām būs spēkā.
Izvietošana
Apmeklējiet Vultr servera izvietošanas saskarni .
Pārliecinieties, vai lapas Vultr Cloud (VC2)
augšdaļā ir atlasīta cilne.
Server Location
Sadaļā varat atlasīt jebkuru atrašanās vietu , taču visiem serveriem ir jāatrodas vienā vietā , pretējā gadījumā tiem nebūs iespējams izvietot Docker spietu.
Atlasiet ISO Library
sadaļas cilni Server Type
un izvēlieties Alpine Linux 3.9.0 x86_64
attēlu.
Sadaļā atlasiet atbilstošo opciju Server Size
. Šajā rokasgrāmatā tiks izmantots 25 GB SSD servera izmērs, taču ar to var nepietikt, lai atbilstu jūsu lietojumprogrammas resursu prasībām. Lai gan Vultr atvieglo servera lieluma jaunināšanu pēc tam, kad tas jau ir palaists, jums joprojām rūpīgi jāapsver, kāds servera lielums jūsu lietojumprogrammai ir nepieciešams optimālai darbībai.
Sadaļā Additional Features
ir jāizvēlas Enable Private Networking
opcija. Lai gan šīs rokasgrāmatas izpildei nav nepieciešamas citas iespējas, jums vajadzētu apsvērt, vai katrai no tām ir jēga jūsu pieteikuma kontekstā.
Ja iepriekš esat iespējojis šo Multiple Private Networks
opciju savā kontā, jums būs jāatlasa esošs vai jāizveido jauns privātais tīkls saviem serveriem. Ja neesat to iespējojis, varat ignorēt šo sadaļu. Informāciju par privāto tīklu manuālu konfigurēšanu skatiet šajā rokasgrāmatā .
Firewall Group
Pagaidām izlaidiet sadaļu. Tikai serverim, kas darbojas kā pārvaldnieka mezgls Docker barā, būs nepieciešami atklāti porti, un tas ir jākonfigurē pēc servera izvietošanas.
Pašā lapas apakšā ir jāievada Server Qty
vismaz divi. Kā minēts iepriekš, jums var būt nepieciešami vairāk nekā divi serveri, taču pietiek ar diviem, lai ievērotu šo rokasgrāmatu.
Visbeidzot, Server Hostname & Label
sadaļā ievadiet jēgpilnus un neaizmirstamus resursdatora nosaukumus un etiķetes katram serverim. Šajā rokasgrāmatā nolūkos resursdatora un etiķete pirmā servera būs docker-manager
un Docker Manager
, respectively- un docker-worker
un Docker Worker
par otro, attiecīgi.
Pēc visu konfigurāciju dubultas pārbaudes varat noklikšķināt uz Deploy Now
pogas lapas apakšā, lai palaistu savus serverus.
Instalējiet Alpine Linux 3.9.0 serveros
Tā kā jūs izvēlējāties OS no Vultr ISO bibliotēkas, jums būs manuāli jāinstalē un jākonfigurē Alpine Linux 3.9.0 katrā serverī.
Pēc tam, kad Vultr ir dota minūti vai divas, lai piešķirtu jūsu serverus, noklikšķiniet more options
uz Docker Manager
servera trīspunktu ikonas servera pārvaldības saskarnē un pēc tam izvēlieties View Console
opciju.
Jums vajadzētu tikt novirzītam uz konsoli ar pieteikšanās uzvedni. Ja nē, lūdzu, uzgaidiet vēl vienu minūti, līdz Vultr pabeigs jūsu serveru izvietošanu.
Šajā pieteikšanās uzvednē ievadiet root
kā lietotājvārdu. Alpine Linux 3.9.0 tiešraidē (tāds pašlaik darbojas jūsu serveri) nav nepieciešams, lai superlietotājs, piesakoties, ievadītu paroli.
Kad esat veiksmīgi pieteicies saknes kontā, jūs redzēsit sveiciena ziņojumu, kam sekos čaulas uzvedne, kas izskatās šādi:
localhost:~#
Lai palaistu Alpine Linux instalēšanas programmu, ievadiet šādu komandu:
# setup-alpine
Vispirms izvēlieties piemērotu tastatūras izkārtojumu. Šajā rokasgrāmatā tiks izmantots us
izkārtojums un variants.
Iestatot resursdatora nosaukumu, izvēlieties to pašu resursdatora nosaukumu, ko iestatījāt šim serverim izvietošanas laikā. Ja esat precīzi ievērojis šo rokasgrāmatu, saimniekdatora nosaukumam ir jābūt docker-manager
.
Ir jābūt pieejamām divām tīkla saskarnēm: eth0
un eth1
. Ja redzat tikai eth0
, tas nozīmē, ka neesat pareizi konfigurējis savu serveru privāto tīklu. Inicializējiet, eth0
izmantojot dhcp
, un inicializējiet, eth1
izmantojot privāto IP adresi, tīkla masku un vārteju, kas šim serverim tika piešķirta izvietošanas laikā. Šai informācijai varat piekļūt no sava servera iestatījumu saskarnes. Kad tiek prasīts, neveiciet manuālu tīkla konfigurēšanu.
Ievadiet jaunu saknes konta paroli un pēc tam atlasiet laika joslu, kas atbilst vietai, kurā izvēlējāties izvietot šos serverus.
Ja plānojat izmantot HTTP/FTP starpniekserveri, ievadiet tā URL, pretējā gadījumā neiestatiet starpniekservera URL.
Izvēlieties NTP klientu, lai pārvaldītu sistēmas pulksteņa sinhronizāciju. Šajā rokasgrāmatā tiks izmantots busybox
.
Kad tiek prasīts izmantot pakotnes repozitorija spoguli, vai nu izvēlieties to tieši, ievadot tā numuru; automātiski noteikt un atlasīt ātrāko, ievadot f
; vai manuāli rediģējiet repozitorija konfigurācijas failu, ievadot e
, kas nav ieteicams, ja vien neesat pazīstams ar Alpine Linux. Šajā rokasgrāmatā tiks izmantots pirmais spogulis.
Ja plānojat izmantot SSH, lai piekļūtu saviem serveriem vai mitinātu uz SSH balstītu failu sistēmu, atlasiet izmantojamo SSH serveri. Šajā rokasgrāmatā tiks izmantots openssh
.
Kad tiek prasīts, lai disku izmantot, izvēlēties disku vda
kā sys
veidu.
Tagad jūsu serverī ir jāinstalē Alpine Linux 3.9.0. Atkārtojiet šo procesu visiem citiem serveriem, kurus izvietojāt iepriekš, nodrošinot, ka resursdatora nosaukumam un eth1
tīkla interfeisam tiek aizstātas pareizās vērtības .
Servera konfigurācija pēc instalēšanas
Šobrīd jūsu serveros joprojām darbojas Alpine Linux 3.9.0 tiešā ISO versija. Lai palaistu no SSD instalācijas, apmeklējiet sava servera iestatījumu saskarni, pārejiet uz Custom ISO
sānu izvēlnes ierakstu un noklikšķiniet uz Remove ISO
pogas. Tam vajadzētu restartēt serveri. Ja tā nenotiek, atsāknējiet manuāli.
Kad serveris ir pabeidzis restartēšanu, dodieties atpakaļ uz servera tīmekļa konsoli Docker Manager
.
Piesakieties saknes kontā, izmantojot paroli, kuru iestatījāt iepriekš instalēšanas procesa laikā.
Iespējojiet kopienas paketes krātuvi ar uncommenting trešo līniju /etc/apk/repositories
, izmantojot vi
. Jūs varat iespējot malu un testēšanas repozitorijus līdzīgā veidā, taču tiem nav jāievēro šī rokasgrāmata.
Sinhronizējiet servera lokālo pakotņu indeksu ar iepriekš atlasīto attālo repozitoriju, ievadot šādu čaulas komandu:
# apk update
Pēc tam jauniniet novecojušās pakotnes:
# apk upgrade
Tāpat kā iepriekš, atkārtojiet šo konfigurācijas procesu katram serverim, kuru izvietojāt iepriekš.
Instalējiet Docker savos serveros
Pirms pašas Docker pakotnes instalēšanas, iespējams, vēlēsities izveidot atsevišķu docker
lietotāju. To var izdarīt, izmantojot šādu komandu:
# adduser docker
Piezīme. Šim jaunajam lietotājam un visiem jaunajai docker
grupai pievienotajiem lietotājiem būs root tiesības, tiklīdz būs instalēta Docker pakotne. Skatiet šo problēmu no Moby Github krātuves:
Due to the --privileged
in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.
This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.
Ja vēlaties lietotājam piešķirt sudo atļauju docker
, vispirms instalējiet sudo
pakotni:
# apk add sudo
Pēc tam izveidojiet sudo
grupu:
# addgroup sudo
Visbeidzot pievienojiet docker
lietotāju sudo
grupai:
# adduser docker sudo
Tagad varat izpildīt šīs rokasgrāmatas 4. darbību, lai pabeigtu sudo konfigurēšanu.
Šajā brīdī esat gatavs instalēt Docker pakotni. Ņemiet vērā, ka, docker
lai instalētu un konfigurētu Docker, nav noteikti nepieciešams atsevišķs, sudo spējīgs lietotājs, taču šajā rokasgrāmatā ir ievērota šī konvencija.
Instalējiet Docker pakotni ar šādu komandu:
# apk add docker
Pēc tam iespējojiet Docker sākuma skriptu:
# rc-update add docker
Visbeidzot, palaidiet Docker dēmonu:
# rc-service docker start
Varat pārbaudīt, vai Docker darbojas, izmantojot šo komandu:
# docker info
Tāpat kā iepriekšējo reizi, atkārtojiet šo Docker instalēšanas procesu katram serverim, kuru izvietojāt sākumā.
Inicializējiet Docker baru ar vienu pārvaldnieka mezglu un vienu darbinieka mezglu
Ar visu šo iestatīšanu jūs beidzot esat gatavs izveidot Docker spietu.
Izveidojiet spietu un pievienojiet pārvaldnieka mezglu
Dodieties atpakaļ uz sava Docker Manager
servera tīmekļa konsoli . Jūs konfigurēsit šo serveri kā pārvaldnieka mezglu savā barā. Ja izvēlējāties izveidot docker
lietotāju agrāk, piesakieties, izmantojot šo kontu, nevis superlietotāju.
Ievadiet šo komandu, bet aizstājiet 192.0.2.1
ar privāto (nevis publisko) IP adresi, kas Docker Manager
tika piešķirta jūsu serverim:
$ docker swarm init --advertise-addr 192.0.2.1
Docker parādīs komandu, ko varat izpildīt citos privātā tīkla serveros, lai pievienotu tos kā darbinieku mezglus šim jaunajam baram. Saglabājiet šo komandu.
Pievienojiet darbinieka mezglu
Tagad pārejiet uz sava Docker Worker
servera tīmekļa konsoli , pierakstoties ar docker
lietotāju, ja to izveidojāt.
Lai pievienotu šo serveri kā darbinieka mezglu tikko izveidotajam spietam, izpildiet komandu, kuru saglabājāt no spieta izveides komandas izvades. Tas izskatīsies līdzīgi tālāk norādītajam.
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker izvadīs, vai mezgls varēja pievienoties spietam. Ja rodas problēmas, pievienojot strādnieku mezglus spietam, vēlreiz pārbaudiet privātā tīkla konfigurāciju un skatiet šo problēmu novēršanas rokasgrāmatu .
Ja sākumā izvietojāt vairāk nekā divus serverus, pārējos varat pievienot savam baram kā darbinieku mezglus, izmantojot iepriekš minēto komandu, palielinot lietojumprogrammai pieejamo resursu apjomu. Varat arī pievienot papildu pārvaldnieka mezglus, taču tas ir ārpus šīs rokasgrāmatas darbības jomas.
Izvietojiet Portainer ar SSL, lai pārvaldītu savu Docker baru
Šajā brīdī jūsu Docker bars ir gatavs lietošanai. Tomēr pēc izvēles varat palaist Portainer kaudzīti sava bara pārvaldnieka mezglā. Portainer piedāvā ērtu tīmekļa saskarni, lai pārvaldītu jūsu spietu un tajā esošos mezglus.
Tagad ir pienācis laiks izveidot ugunsmūra grupu savam baram. Ja vien jūsu lietojumprogramma to īpaši neprasa, atveriet tikai pārziņa mezglu portus . Darbinieku mezglu portu atklāšana bez rūpīgas apsvēršanas var radīt ievainojamības.
Pārejiet uz ugunsmūra pārvaldības saskarni un izveidojiet jaunu ugunsmūra grupu. Lietojumprogrammai ir jānorāda, kuri porti ir jāatklāj, bet jums ir vismaz jāatklāj 9000
Portainer ports. Lietojiet šo ugunsmūra grupu Docker Manager
serverim.
Lai gan tas nav nepieciešams, ir ļoti ieteicams nodrošināt Portainer ar SSL. Šīs rokasgrāmatas nolūkos jūs izmantosit tikai pašparakstītu OpenSSL sertifikātu, taču apsveriet iespēju izmantot Let's Encrypt ražošanā.
Pārejiet uz Docker Manager
servera tīmekļa konsoli , piesakieties, izmantojot docker
lietotāju, un izmantojiet šādas komandas, lai ģenerētu pašparakstītu OpenSSL sertifikātu:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Izveidojiet jaunu failu ~/portainer-agent-stack.yml
, ar šādu saturu:
version: '3.2'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
CAP_HOST_MANAGEMENT: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- agent_network
deploy:
mode: global
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
ports:
- target: 9000
published: 9000
protocol: tcp
mode: host
volumes:
- portainer_data:/data
- /home/docker/certs:/certs
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
Pēc šī Docker steka konfigurācijas faila modificēšanas, lai tas atbilstu jūsu prasībām, varat to izvietot:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Lai pārbaudītu, vai Portainer darbojas, izpildiet šo komandu pēc tam, kad Docker ir dota minūti vai divas, lai izvietotu steku:
$ docker ps
Jūs redzēsit divus konteinerus ar attēliem portainer/portainer:latest
un portainer/agent:latest
, pārbaudot, vai Portaineer startēja pareizi.
Tagad varat konfigurēt un pārvaldīt savu Docker spietu, apmeklējot sava Docker Manager
servera publisko IP adresi portā, 9000
izmantojot HTTPS.