Ză instracșăns.
1. Pregătirea Raspberry Pi:
Descarci Raspbian (Lite) și-l scrii pe un microSD folosind Balena Etcher.
Pe cardul microSD o să găsești 2 partiții, una boot și alta linux. Pe cea de boot pui în folderul rădăcină un fișier gol cu numele ssh (fără extensie) pentru ca să se activeze serviciul SSH direct, fără să trebuiască să pui monitor și tastatură. De asemenea, mai modifici fișierul config.txt adăugând la sfârșit:
Cu asta dezactivezi SPI, audio, UART, bluetooth și wifi dacă intenționezi să-l folosești doar pe fir. De asemenea, eliberezi din memorie din moment ce-l vei folosi headless și atunci GPU-ul nu are nevoie să rezerve memorie pentru grafică.
Bagi cardul în RPi, îl conectezi la switch, îl pornești, afli din router sau cu un network scanner ce IP are, te conectezi prin SSH cu user pi și parola raspberry. E recomandat să schimbi parola cu passwd.
Actualizări:
Configurație:
unde le iei pe rând ca să configurezi rețeaua, eventual și localizarea, iar la advanced dai expand filesystem pentru ca a doua partiție să umple cardul.
2. Instalarea Docker:
Asta e tot ce ai de rulat:
Docker e rulat din linie de comandă folosind, evident, comanda docker. Ca să nu tot dai sudo docker tralala fiindcă tu ești autentificat de obicei cu userul pi, cel mai bine ar fi să adaugi userul pi la grupul docker:
După un logoff/logon sau reboot, apartenența va intra în vigoare.
3. Instalarea portainer:
Nimic mai simplu:
4: Configurarea portainer:
Te conectezi din browser la http://<ip raspberry>:9000. Primul pas e să faci un user de administrare și să-i definești parola. Dup-aia te întreabă dacă vrei să administrezi un docker local sau remote - alegi local. Da, condiția aia specificată cu roșu pe ecran a fost deja îndeplinită la punctul 2
Unele tutoriale spun să instalezi și docker-compose, ca să fie mai ușor să controlezi dockerul (fără portainer). Ăsta se instalează ușor folosind pip, care e un utilitar python. Majoritatea tutorialelor găsite se referă la python 2, care e deprecated și urmează să fie pensionat, deci trebuie să instalezi întâi python 3 care să aducă pip, și apoi să instalezi cu pip docker-compose. Meh.
5: Primul container - pi-hole FTW!
Imaginea oficială este aici: https://hub.docker.com/r/pihole/pihole asta însemnând că e userul pihole / imaginea pihole. Userul are publicate mai multe imagini, de exemplu pihole/debian-base.
După numele imaginii mai poți specifica și un tag prin care să specifici versiunea. Poți vedea pe Docker Hub mai sus în tab-ul Tags ce versiuni există - atât versiuni de software cât și platforma.
De obicei poți folosi :latest drept tag care să indice spre ultima versiune, și detectează singur ce platformă ai.
Deci, ai putea din linia de comandă să descarci imaginea folosind
sau mai specific
și dup-aia să pui configurația dată drept exemplu pe pagină la quick start într-un fișier docker-compose.yml ca fișier de „configurare” salvat în /home/pi/docker-stuff/pi-hole/ .
Dar eu sunt un puturos, de-aia mi-am pus portainer
În portainer ai putea face același lucru mergând în Images, scriind pihole/pihole:latest la numele imaginii, DockerHub la Registry, și click pe Pull the image. De fapt orice imagine descarci folosind comanda docker pull o să apară în lista de imagini descărcate local în secțiunea Images.
Dar poți să faci containerul direct, fără să descarci mai întâi imaginea. Deschizi portainer în browser, mergi la Container - Add container, scrii ce nume vrei să-i dai, pui numele imaginii ca mai sus, și apoi urmează distracția configurării necesare pentru container folosind imaginea respectivă.
Pi-hole are nevoie de câteva chestii:
Ghid de instalare pi-hole cu poze: https://homenetworkguy.com/how-to/install-pihole-on-raspberry-pi-with-docker-and-portainer/
Alte imagini vor avea nevoile lor privind configurația de rețea, folderele din imagine mapate spre stocarea persistentă, alte flag-uri etc. Tre' să citești.
De exemplu am dat de containrrr/watchtower care automatizează descărcarea de imagini actualizate pentru containere și repornirea containerelor cu imaginile noi. Tre' să văd ce trebuie să-i fac ca să-l rulez. https://hub.docker.com/r/containrrr/watchtower
1. Pregătirea Raspberry Pi:
Descarci Raspbian (Lite) și-l scrii pe un microSD folosind Balena Etcher.
Pe cardul microSD o să găsești 2 partiții, una boot și alta linux. Pe cea de boot pui în folderul rădăcină un fișier gol cu numele ssh (fără extensie) pentru ca să se activeze serviciul SSH direct, fără să trebuiască să pui monitor și tastatură. De asemenea, mai modifici fișierul config.txt adăugând la sfârșit:
Code:
dtparam=spi=off
dtparam=audio=off
start_x=0
enable_uart=0
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
gpu_mem=16
Cu asta dezactivezi SPI, audio, UART, bluetooth și wifi dacă intenționezi să-l folosești doar pe fir. De asemenea, eliberezi din memorie din moment ce-l vei folosi headless și atunci GPU-ul nu are nevoie să rezerve memorie pentru grafică.
Bagi cardul în RPi, îl conectezi la switch, îl pornești, afli din router sau cu un network scanner ce IP are, te conectezi prin SSH cu user pi și parola raspberry. E recomandat să schimbi parola cu passwd.
Actualizări:
Bash:
sudo apt update
sudo apt upgrade
sudo apt -y dist-upgrade
Configurație:
Bash:
sudo raspi-config
2. Instalarea Docker:
Asta e tot ce ai de rulat:
Bash:
curl -sSL https://get.docker.com | sh
Docker e rulat din linie de comandă folosind, evident, comanda docker. Ca să nu tot dai sudo docker tralala fiindcă tu ești autentificat de obicei cu userul pi, cel mai bine ar fi să adaugi userul pi la grupul docker:
Bash:
sudo gpasswd -a pi docker
După un logoff/logon sau reboot, apartenența va intra în vigoare.
3. Instalarea portainer:
Nimic mai simplu:
Bash:
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart always portainer/portainer
4: Configurarea portainer:
Te conectezi din browser la http://<ip raspberry>:9000. Primul pas e să faci un user de administrare și să-i definești parola. Dup-aia te întreabă dacă vrei să administrezi un docker local sau remote - alegi local. Da, condiția aia specificată cu roșu pe ecran a fost deja îndeplinită la punctul 2
Unele tutoriale spun să instalezi și docker-compose, ca să fie mai ușor să controlezi dockerul (fără portainer). Ăsta se instalează ușor folosind pip, care e un utilitar python. Majoritatea tutorialelor găsite se referă la python 2, care e deprecated și urmează să fie pensionat, deci trebuie să instalezi întâi python 3 care să aducă pip, și apoi să instalezi cu pip docker-compose. Meh.
5: Primul container - pi-hole FTW!
Imaginea oficială este aici: https://hub.docker.com/r/pihole/pihole asta însemnând că e userul pihole / imaginea pihole. Userul are publicate mai multe imagini, de exemplu pihole/debian-base.
După numele imaginii mai poți specifica și un tag prin care să specifici versiunea. Poți vedea pe Docker Hub mai sus în tab-ul Tags ce versiuni există - atât versiuni de software cât și platforma.
De obicei poți folosi :latest drept tag care să indice spre ultima versiune, și detectează singur ce platformă ai.
Deci, ai putea din linia de comandă să descarci imaginea folosind
Bash:
docker pull pihole/pihole
Bash:
docker pull pihole/pihole:latest
Dar eu sunt un puturos, de-aia mi-am pus portainer
În portainer ai putea face același lucru mergând în Images, scriind pihole/pihole:latest la numele imaginii, DockerHub la Registry, și click pe Pull the image. De fapt orice imagine descarci folosind comanda docker pull o să apară în lista de imagini descărcate local în secțiunea Images.
Dar poți să faci containerul direct, fără să descarci mai întâi imaginea. Deschizi portainer în browser, mergi la Container - Add container, scrii ce nume vrei să-i dai, pui numele imaginii ca mai sus, și apoi urmează distracția configurării necesare pentru container folosind imaginea respectivă.
Pi-hole are nevoie de câteva chestii:
- maparea porturilor de pe host pe container, pentru ca să comunice în rețea (asta cu Network mai jos setat în mod Bridge, că se poate și Host și atunci expune tot)
- maparea unor căi din container spre foldere de pe host (/home/pi/docker-stuff/pi-hole) unde să fie salvate fișierele persistente
- setarea unor variabile de mediu în Env (environment) prin care să dai anumiți parametri containerului, de exemplu parola de administrare, timezone-ul și DNS-ul upstream preferat
- setarea restart policy pe Always sau Unless Stopped, pentru ca containerul să repornească automat la boot
Ghid de instalare pi-hole cu poze: https://homenetworkguy.com/how-to/install-pihole-on-raspberry-pi-with-docker-and-portainer/
Alte imagini vor avea nevoile lor privind configurația de rețea, folderele din imagine mapate spre stocarea persistentă, alte flag-uri etc. Tre' să citești.
De exemplu am dat de containrrr/watchtower care automatizează descărcarea de imagini actualizate pentru containere și repornirea containerelor cu imaginile noi. Tre' să văd ce trebuie să-i fac ca să-l rulez. https://hub.docker.com/r/containrrr/watchtower