Den nemme måde at oprette Docker på en Raspberry Pi på

Docker er et meget nyttigt værktøj til at køre containeriserede versioner af populære applikationer (såsom databaser) eller opsætte nogle IoT-tjenester på en internetforbundet enhed.

Men installation af Docker kan undertiden være besværligt, hvis det skal gøres et antal gange på tværs af forskellige computere. Sølvforingen er dog, at der er et praktisk trick gemt væk i Docker-dokumenterne, der beskriver, hvordan man installerer Docker med kun to linjer i terminalen.

Ja, du hørte rigtigt! Med kun to linjer kan du indlæse og installere Docker.

Installation af Docker kan håndteres af et bash-script, der automatiserer hele installationen. Docker leverer et sådant script på get.docker.com. Den første kommando bruger denne URL og leder efter en fil, der hedder get-docker.sh. Når først vi er kommet, kører vi bare scriptet. De to kommandoer kan lænkes sammen for at danne en erklæring som:

curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Nu har du installeret Docker, og installationen tog kun to linjer.

Som du lige så, er de to kommandoer ovenfor sammenkædet ved hjælp af '&&' operatøren. Dette betyder, at kommandoerne kører efter hinanden, men kan indtastes på samme linje.

Et lille problem er dog, at du kan have problemer med at køre Docker-kommandoer uden sudo. Dette kan løses, men det tager nogle få flere linjer.

Sådan konfigureres Docker til at køre uden at bruge sudo hele tiden

Jeg opdagede denne løsning på AskUbuntu efter at have stødt på problemet. Lad os gennemgå det nu.

Der er 3 trin:

  1. Tilføj Docker-gruppen, hvis den ikke allerede findes:
sudo groupadd docker

2. Føj den tilsluttede bruger “$ USER” til dockergruppen. Skift brugernavnet, så det passer til din foretrukne bruger, hvis du ikke vil bruge din nuværende bruger:

sudo gpasswd -a $USER docker

3. Herfra har du to muligheder: enten logge ud og derefter logge ind igen eller køre newgrp dockerfor at ændringerne skal træde i kraft.

Du skal nu kunne køre Docker uden sudo. For at teste, prøv dette:

docker run hello-world

Hvis det fungerede, skal du se en dejlig besked fra Docker:

Igen går al ære for denne løsning til dette store AskUbuntu-svar, jeg fandt. Uden at skrive sudo hele tiden vil kommandoer være meget lettere at arbejde med.

Men vent, der er mere!

Hvad hvis du også vil have docker-compose? Du kan prøve at installere docker-compose-kilden på samme måde som vi installerede Docker. En interessant tilgang, jeg fandt på Google Cloud Engines-dokumenterne, er at du faktisk kan køre docker-compose som en container selv!

Dette betyder, at du har en engangsinstallation af docker-compose, som vil blive brugt til at komponere dine tjenester. Når som helst kan du smide det væk og gentage trinene til en ny docker-komponere.

Første trin kører docker-compose som en container og giver det adgang til diskenheder.

docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.13.0 up

Lav derefter et alias til docker-komponering:

echo alias docker-compose="'"'docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.13.0'"'" >> ~/.bashrc

Genindlæs derefter bash:

source ~/.bashrc

Nu har du fuld adgang til docker-compose. Aliaset defineret ovenfor betyder, at i stedet for at skulle skrive docker-kommandoer ud, når du vil bruge komponentbeholderen, kan du bare bruge 'docker-compose' som du normalt ville.

Vigtig meddelelse om Docker på RPi

Raspberry Pi bruger ARM-archetecture og vil som et resultat ikke være kompatibel med alle containere ud af kassen. Billeder skal bygges ud fra et ARM-basisbillede.

Du kan se dette i aktion ved at køre en containeriseret Redis-forekomst på en Raspberry Pi (hvilket er ret relevant for en kommende serie, jeg skriver). Hvis du gør det, skal du arbejde med et basisbillede. Forudsat at vi bruger et ARM-kompatibelt billede, bør der ikke opstå problemer. Problemet er at finde en velholdt.

Hvis du nød denne artikel, skal du give den et klapp.

Jeg har andre indlæg på min side relateret til Microservices, Ionic og mere.