Introduktion
											
										
																			
											
												Forudsætninger
											
										
																			
											
												Implementering
											
										
																			
											
												Installer Alpine Linux 3.9.0 på serverne
											
										
																			
											
												Serverkonfiguration efter installation
											
										
																			
											
												Installer Docker på dine servere
											
										
																			
											
												Initialiser en Docker-sværm med én lederknude og én arbejderknude
											
										
																			
											
												Implementer Portainer med SSL for at administrere din Docker-sværm
											
										
																	
												
Introduktion
Denne guide viser dig, hvordan du opretter og konfigurerer en Docker-sværm ved hjælp af flere Alpine Linux 3.9.0-servere og Portainer. Vær opmærksom på, at Vultr tilbyder en One-Click Docker-app, der i øjeblikket understøtter både CentOS 7 x64 og Ubuntu 16.04 x64.
Forudsætninger
For at begynde skal du bruge mindst to VC2-servere, der kører Alpine Linux 3.9.0. Inden for din Docker-sværm vil en af disse servere fungere som en manager nodegrænseflade med eksterne netværk og uddelegere job til arbejderknudepunkter. Den anden server vil derefter fungere som et worker node- udførende job, der er uddelegeret til den af managerknudepunktet.
Bemærk, at du kan starte mere end to servere, hvis din applikation kræver redundans og/eller mere computerkraft, og trinene i denne vejledning vil stadig gælde.
Implementering
Besøg Vultr serverimplementeringsgrænsefladen .
Sørg for, at Vultr Cloud (VC2)fanen er valgt øverst på siden.
Du kan vælge en hvilken som helst placering fra Server Locationsektionen, dog skal alle servere være på samme placering , ellers vil det ikke være muligt at implementere en Docker-sværm til dem.
Vælg ISO Libraryfanen for Server Typesektionen, og vælg Alpine Linux 3.9.0 x86_64billedet.
Vælg en passende mulighed fra Server Sizesektionen. Denne vejledning vil bruge 25 GB SSD-serverstørrelsen, men denne kan være utilstrækkelig til at opfylde din applikations ressourcekrav. Selvom Vultr gør det nemt at opgradere en servers størrelse, efter at den allerede er blevet lanceret, bør du stadig nøje overveje, hvilken serverstørrelse din applikation skal bruge for at fungere optimalt.
I Additional Featuresafsnittet skal du vælge Enable Private Networkingmuligheden. Selvom de andre muligheder ikke er nødvendige for at følge denne vejledning, bør du overveje, om hver enkelt giver mening i forbindelse med din ansøgning.
Hvis du tidligere har aktiveret Multiple Private Networksmuligheden på din konto, skal du enten vælge et eksisterende eller oprette et nyt privat netværk til dine servere. Hvis du ikke har aktiveret det, kan du ignorere dette afsnit. Se denne vejledning for at få oplysninger om manuel konfiguration af private netværk .
Spring Firewall Groupafsnittet over for nu. Kun serveren, der fungerer som en managerknude i Docker-sværmen, har brug for udsatte porte, og dette bør konfigureres efter serverinstallation.
Helt nederst på siden skal du indtaste en Server Qtypå mindst to. Som tidligere nævnt har du muligvis brug for mere end to servere, men to er nok til at følge denne guide.
Til sidst skal du i Server Hostname & Labelafsnittet indtaste meningsfulde og mindeværdige værtsnavne og etiketter for hver server. I forbindelse med denne vejledning vil værtsnavnet og etiketten for den første server være henholdsvis docker-managerog Docker Manager, og docker-workerog Docker Workerfor den anden.
Efter at have dobbelttjekket alle dine konfigurationer, kan du klikke på Deploy Nowknappen nederst på siden for at starte dine servere.
Installer Alpine Linux 3.9.0 på serverne
Fordi du har valgt et OS fra Vultrs ISO-bibliotek, skal du manuelt installere og konfigurere Alpine Linux 3.9.0 på hver server.
Efter at have givet Vultr et minut eller to til at tildele dine servere, skal du klikke på det tredobbelte prikikon more optionsfor Docker Managerserveren på serveradministrationsgrænsefladen og derefter vælge View Consolemuligheden.
Du bør omdirigeres til en konsol med en login-prompt. Hvis ikke, vent venligst endnu et minut til Vultr er færdig med at implementere dine servere.
Ved den login-prompt skal du indtaste rootsom brugernavn. Liveversionen af Alpine Linux 3.9.0 (som er det, dine servere kører i øjeblikket) kræver ikke, at superbrugeren indtaster en adgangskode, når han logger på.
Når du har logget ind på root-kontoen, vil du se en velkomstmeddelelse efterfulgt af en shell-prompt, der ser ud som følgende:
localhost:~# 
Indtast følgende kommando for at starte Alpine Linux-installationsprogrammet:
# setup-alpine
Først skal du vælge et passende tastaturlayout. Denne vejledning vil bruge uslayoutet og varianten.
Når du indstiller værtsnavnet, skal du vælge det samme værtsnavn, som du angiver for denne server under installationen. Hvis du har fulgt denne vejledning nøjagtigt, skal værtsnavnet være docker-manager.
To netværksgrænseflader bør være tilgængelige: eth0og eth1. Hvis du kun ser eth0, betyder det, at du ikke har konfigureret dine serveres private netværk korrekt. Initialiser eth0ved hjælp af dhcp, og initialiser eth1ved hjælp af den private IP-adresse, netmaske og gateway, som denne server blev tildelt under installationen. Du kan få adgang til disse detaljer fra indstillingsgrænsefladen på din server. Når du bliver bedt om det, skal du ikke udføre nogen manuel netværkskonfiguration.
Indtast en ny adgangskode til root-kontoen, og vælg derefter en tidszone, der passer til den placering, du valgte at implementere disse servere til.
Hvis du har til hensigt at bruge en HTTP/FTP-proxy, skal du indtaste dens URL, ellers skal du ikke angive en proxy-URL.
Vælg en NTP-klient til at administrere systemursynkronisering. Denne vejledning vil bruge busybox.
Når du bliver bedt om at bruge et pakkelagerspejl, skal du enten vælge et eksplicit ved at indtaste dets nummer; automatisk opdage og vælge den hurtigste ved at indtaste f; eller rediger repository-konfigurationsfilen manuelt ved at indtaste e, hvilket ikke anbefales, medmindre du er fortrolig med Alpine Linux. Denne guide vil bruge det første spejl.
Hvis du planlægger at bruge SSH til at få adgang til dine servere eller være vært for et SSH-baseret filsystem, skal du vælge en SSH-server, du vil bruge. Denne vejledning vil bruge openssh.
Når du bliver bedt om at bruge en disk, skal du vælge disk vdasom systype.
Alpine Linux 3.9.0 skulle nu være installeret på din server. Gentag denne proces for alle andre servere, du har installeret tidligere, og sørg for, at du erstatter værtsnavnet og eth1netværksgrænsefladen med de korrekte værdier .
Serverkonfiguration efter installation
På dette tidspunkt kører dine servere stadig den levende ISO-version af Alpine Linux 3.9.0. For at starte fra SSD-installationen skal du besøge indstillingsgrænsefladen på din server, navigere til Custom ISOsidemenuen og klikke på Remove ISOknappen. Dette burde genstarte serveren. Hvis det ikke gør det, skal du genstarte manuelt.
Når serveren er færdig med at genstarte, skal du navigere tilbage til webkonsollen for serveren Docker Manager.
Log ind på root-kontoen ved hjælp af den adgangskode, du har angivet tidligere under installationsprocessen.
Aktiver fællesskabspakkelageret ved at fjerne kommentering af den tredje linje med /etc/apk/repositoriesbrug vi. Du kan aktivere kant- og testlagrene på lignende måde, men de er ikke forpligtet til at følge denne vejledning.
Synkroniser serverens lokale pakkeindeks med det fjernlager, du valgte tidligere, ved at indtaste følgende shell-kommando:
# apk update
Opgrader derefter forældede pakker:
# apk upgrade
Som før skal du gentage denne konfigurationsproces for hver server, du har installeret tidligere.
Installer Docker på dine servere
Før du installerer selve Docker-pakken, vil du måske oprette en separat dockerbruger. Du kan gøre dette ved at bruge følgende kommando:
# adduser docker
Bemærk:  Denne nye bruger og alle brugere, der tilføjes til den nye dockergruppe, vil have root-privilegier, når Docker-pakken er blevet installeret. Se følgende problem fra Moby Github-depotet:
  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.
Hvis du gerne vil give sudo-tilladelse til dockerbrugeren, skal du først installere sudopakken:
# apk add sudo
Opret derefter en sudogruppe:
# addgroup sudo
Tilføj endelig dockerbrugeren til sudogruppen:
# adduser docker sudo
Nu kan du følge trin 4 i denne vejledning for at afslutte konfigurationen af sudo.
På dette tidspunkt er du klar til at installere Docker-pakken. Bemærk, at det ikke er strengt nødvendigt at have en separat, sudo-egnet dockerbruger til at installere og konfigurere Docker, men denne vejledning følger denne konvention.
Installer Docker-pakken med følgende kommando:
# apk add docker
Aktiver derefter Docker init-scriptet:
# rc-update add docker
Start endelig Docker-dæmonen:
# rc-service docker start
Du kan bekræfte, at Docker kører med denne kommando:
# docker info
Som med sidste gang, gentag denne Docker-installationsproces for hver server, du installerede i starten.
Initialiser en Docker-sværm med én lederknude og én arbejderknude
Med alt det setup behandlet, er du endelig klar til at skabe Docker-sværmen.
Opret en sværm og tilføj en managerknude
Naviger tilbage til webkonsollen på din Docker Managerserver. Du vil konfigurere denne server som en managerknude i din sværm. Hvis du valgte at oprette dockerbrugeren tidligere, skal du logge ind med denne konto i stedet for superbrugeren.
Indtast følgende kommando, men erstat 192.0.2.1med den private (ikke den offentlige), IP-adresse, som din Docker Managerserver blev tildelt:
$ docker swarm init --advertise-addr 192.0.2.1
Docker viser en kommando, du kan udføre på andre servere i det private netværk for at tilføje dem som arbejderknudepunkter til denne nye sværm. Gem denne kommando.
Tilføj en arbejderknude
Naviger nu til webkonsollen på din Docker Workerserver, log på med dockerbrugeren, hvis du har oprettet den.
For at tilføje denne server som en arbejderknude til den sværm, du lige har oprettet, skal du udføre den kommando, du gemte fra outputtet af kommandoen til oprettelse af sværm. Det vil ligne følgende:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker vil udsende, om noden var i stand til at deltage i sværmen. Hvis du støder på problemer med at tilføje arbejdernoder til sværmen, skal du dobbelttjekke din private netværkskonfiguration og se denne vejledning for fejlfinding.
Hvis du installerede mere end to servere i begyndelsen, kan du tilføje resten som arbejdernoder til din sværm ved at bruge kommandoen ovenfor, hvilket øger mængden af ressourcer, der er tilgængelige for din applikation. Alternativt kan du tilføje yderligere managerknudepunkter, men det er uden for rammerne af denne vejledning.
Implementer Portainer med SSL for at administrere din Docker-sværm
På dette tidspunkt er din Docker-sværm klar til brug. Du kan dog eventuelt starte en Portainer-stak på managerknudepunktet i din sværm. Portainer tilbyder en praktisk webgrænseflade til styring af din sværm og noderne deri.
Det er nu tid til at oprette en firewall-gruppe til din sværm. Medmindre din applikation specifikt kræver det, skal du kun udsætte porte på dine managerknudepunkter . Eksponering af porte på dine arbejdernoder uden nøje overvejelse kan introducere sårbarheder.
Naviger til firewall-administrationsgrænsefladen, og opret en ny firewallgruppe. Din ansøgning bør diktere, hvilke porte der skal eksponeres, men du skal i det mindste blotlægge port 9000for Portainer. Anvend denne firewall-gruppe på Docker Managerserveren.
Selvom det ikke er påkrævet, anbefales det kraftigt at sikre Portainer med SSL. Af hensyn til denne guide vil du kun bruge et selvsigneret OpenSSL-certifikat, men du bør overveje at bruge Let's Encrypt i produktionen.
Naviger til Docker Managerserverens webkonsol , log ind med dockerbrugeren, og brug følgende kommandoer til at generere et selvsigneret OpenSSL-certifikat:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Opret en ny fil, ~/portainer-agent-stack.yml, med følgende indhold:
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:
Efter at have ændret denne Docker stack-konfigurationsfil, så den er i overensstemmelse med dine krav, kan du implementere den:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
For at bekræfte, at Portainer virker, skal du udføre følgende kommando efter at have givet Docker et minut eller to til at implementere stakken:
$ docker ps
Du vil se to beholdere med billederne portainer/portainer:latestog portainer/agent:latest, der bekræfter, at Portainer startede korrekt.
Du kan nu konfigurere og administrere din Docker-sværm ved at besøge den offentlige IP-adresse på din Docker Managerserver på porten 9000ved hjælp af HTTPS.