Dit topic ben ik gestart voor de vele Synology's welke Docker niet kunnen installeren via de DSM 7 GUI.
In dit stappenplan zal ik ook PiHole invoegen om te testen of Docker functioneert. Je kan deze stap overslaan en je eigen containers configureren.
##Disclaimer:
Niet elke Synology NAS kan Docker draaien. De enige manier is proberen en kijken of je het werkend krijgt. Het blijft een trial and error. Ik ben ook niet aansprakelijk voor fouten of het niet volgen van de tutorial.
Wat heb je nodig om het uit te voeren:
- Een Synology NAS
- Putty / Windows, Terminal MacOS(of iets soortgelijks).
- WinSCP (Niet perse maar handig als je het bij de hand hebt)
- Enige kennis van Linux om te troubleshooten.
- Verifieer of je kernel 3.10 of later draait! (Zie stap 2)
Stap 1: Inschakelen van SSH
- Open de GUI van je Synology en ga naar Configuratiescherm -> Terminal en SNMP
- Vinkje zetten bij "SSH-Service inschakelen" en druk op "Toepassen". (Herstart de Synology als dit nodig is.)
- Na het volgen van deze manual is het aangeraden om SSH uit te schakelen.
Stap 2: Verbinden met SSH
- Open Putty en verbind naar je Synology met de login gegevens die je gebruikt in de GUI.
Stap 2.a: Kernel verificatie
Verifieer met onderstaand commando of je kernel 3.10 of later draait om Docker werkend te krijgen.
Stap 3: Starten met verhoogde toegangsrechten en verifieer de aanwezige CPU.
Onderstaande zal je commando's wijzen zichzelf.
Wanneer je het sudo commando gebruikt zal je nogmaals het wachtwoord in moeten vullen.
Dit is hetzelfde wachtwoord als je gebruikt voor je normale account.
De regel "Model Name" van de CPU output is belangrijk.
Stap 4: Bepalen welke Docker versie je nodig hebt
Ga naar de Docker website LINK.
Je zal hier de volgende opties zien;
aarch64/
armel/
armhf/
ppc64le/
s390x/
x86_64/
Voor mijn situatie "ARMv7 Processor rev 4 (v7l)" heb ik de versie nodig vanuit "armhf".
De "armel" is voor de oudere 32bit ARM technologie. De "armhf" is voor de versie 7 ARM CPU.
De overige architecturen (Als ze in de synology zitten) kunnen via DSM Docker installeren.
Let op:
Het is verleidelijk om de laatste versie te pakken van de "armhf" docker installatie. Deze zal helaas niet draaien en de synology zal in latere stappen terug komen met de melding: "segmentation fault error".
Hou het bij versie 19.03.8. Deze is stabiel en zal zonder problemen draaien.
Stap 5: Download de Docker instance
In de volgende commando's gaan we naar de root folder waarin we wat mappen aanmaken.
Hierin gaan we de docker instance in downloaden en uitpakken.
Stap 6: De installatie van Docker
Verificatie:
Gebruik het commando "pwd" en verifieer je of in de volgende locatie bent: "/root/docker_install".
Mocht je in "/root/docker_install/docker" zijn, gebruik dan het commando "cd /root/docker_install".
Kopieer de bestanden uit de map "docker" naar "/usr/bin".
Maak een map aan waar je je containers wil draaien. Ik heb dit op "Volume 1" staan maar pas dit aan naar waar je het wil.
Nu gaan we een configuratie file aanmaken voor docker zodat hij de eerder aangemaakt map ook gaat gebruiken. Dit kan je doen door de volgende commando's uit te voeren.
Een tekst veld zal naar voor komen in je terminal. Kopieer het volgende (Pas het volume aan als je deze in de vorige stap gewijzigd hebt), plak het erin met "ctrl + v" en sluit het meteen af met "ctrl + d".
Start hierna docker door het commando "dockerd" te draaien.
Het kan dat je de volgende error tijdens het opstarten tegen komt:
iptables failed: iptables -t nat -N DOCKER: iptables v1.8.3 (legacy): can't initialize iptables table `nat': iptables who? (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.
De errors zijn op te lossen door het volgende commando uit te voeren:
Nadat de NAS herstart is kun je opnieuw inloggen met SSH, zorg wel ervoor dat je terug root toegang krijgt.
Start nogmaals "dockerd" en als de instance blijft draaien zonder foutmeldingen open een aparte SSH sessie en log hier op in met hetzelfde account.
Als alles goed gaat en docker werkt zal je het volgende zien in je SSH:
Sluit alle terminals en open een nieuwe terminal sessie met root toegang.
Stap 7: Docker laten starten als een service
Je hebt nu docker werkend maar zodra je je terminals afsluit zal ook docker stoppen. Dit is natuurlijk niet wenselijk dus gaan we een service aanmaken zodat Docker opstart met de NAS als een service.
Kopieer de volgende tekst, plaats het met "ctrl + v" in je terminal en sla het op met "ctrl + d"
De volgende commando's gaan ervoor zorgen dat de systemctl (De verzorger van de "services/daemons") de nieuwe file ziet die we net aangemaakt hebben. Hierna gaan we de docker service starten en de status controleren. Het is wel handig om te weten of hij ook start voor we hem instellen om te starten bij het aangaan van de Synology.
Stap 8: OPTIONEEL: Installatie van PiHole
Zorg ervoor wanneer je het volgende in je terminal invoert dat de volgende waardes aangepast zijn:
WEBPASSWORD - Zorg hiervoor dat je een nieuw wachtwoord gebruikt deze is nodig om in PiHole in te loggen.
ServerIP = Vul hier het IP in van de NAS
Volumes = Vul hier de volume in waarin je docker hebt geprogrammeerd:
Als je alles goed gedaan hebt kun je PiHole openen vanuit je NAS via poort 8080.
Je kan deze container gebruiken om al je eigen DNS verkeer heen te sturen.
HELP! Docker start niet meer na een update van DSM!
Na een update van DSM kan het voorkomen dat docker niet meer opstart.
Als je de service status bekijkt, nadat je een start commando gestuurd hebt, is ook een fail start error.
De service kon niet gestart worden, welke verwijst naar de files in /usr/bin/ omdat deze er niet meer zijn.
Je kan docker opnieuw downloaden en naar de /usr/bin folder kopieren zoals omschreven in de start post.
Hierna kan ja de service weer starten.
HELP! PiHole start niet meer na een container update!
Vandaag wilde ik docker updaten naar de laatste versie maar nadat ik de release notes las ik dat oudere systemen deze versie niet meer kunnen draaien zonder problemen. Eigenwijs zoals ik ben heb ik het toch gedaan en merkte dat de CPU load op 100% sprong en ik klaar was met docker,Pihole en de gehele NAS.
Na een harde herstart van de NAS en het disablen van de docker service heb ik op "/volume1/docker" de "pihole" map verwijdert inclusief de "containers" map. Hierna ben ik gaan zoeken welke versie er nog wel draaide op de NAS. Dit blijkt docker 2022.2.1 te zijn.
Voor zij die nog niet naar de laatste versie zijn gegaan kunnen het volgen de doen:
In dit stappenplan zal ik ook PiHole invoegen om te testen of Docker functioneert. Je kan deze stap overslaan en je eigen containers configureren.
##Disclaimer:
Niet elke Synology NAS kan Docker draaien. De enige manier is proberen en kijken of je het werkend krijgt. Het blijft een trial and error. Ik ben ook niet aansprakelijk voor fouten of het niet volgen van de tutorial.
Wat heb je nodig om het uit te voeren:
- Een Synology NAS
- Putty / Windows, Terminal MacOS(of iets soortgelijks).
- WinSCP (Niet perse maar handig als je het bij de hand hebt)
- Enige kennis van Linux om te troubleshooten.
- Verifieer of je kernel 3.10 of later draait! (Zie stap 2)
Stap 1: Inschakelen van SSH
- Open de GUI van je Synology en ga naar Configuratiescherm -> Terminal en SNMP
- Vinkje zetten bij "SSH-Service inschakelen" en druk op "Toepassen". (Herstart de Synology als dit nodig is.)
- Na het volgen van deze manual is het aangeraden om SSH uit te schakelen.
Stap 2: Verbinden met SSH
- Open Putty en verbind naar je Synology met de login gegevens die je gebruikt in de GUI.
login as: Batman Batman@Batmobile1's password: Synology strongly advises you not to run commands as the root user, who has the highest privileges on the system. Doing so may cause major damages to the system. Please note that if you choose to proceed, all consequences are at your own risk. Could not chdir to home directory /var/services/homes/Batman: No such file or directory Batman@Batmobile1:/$
Stap 2.a: Kernel verificatie
Verifieer met onderstaand commando of je kernel 3.10 of later draait om Docker werkend te krijgen.
Batman@Batmobile1:/$ uname -r 3.10.108
Stap 3: Starten met verhoogde toegangsrechten en verifieer de aanwezige CPU.
Onderstaande zal je commando's wijzen zichzelf.
Wanneer je het sudo commando gebruikt zal je nogmaals het wachtwoord in moeten vullen.
Dit is hetzelfde wachtwoord als je gebruikt voor je normale account.
De regel "Model Name" van de CPU output is belangrijk.
Batman@Batmobile1:/$ sudo -i Password: root@Batmobile1:~# cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 4 (v7l) Speed : 1.4GHz Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc0f CPU revision : 4
Stap 4: Bepalen welke Docker versie je nodig hebt
Ga naar de Docker website LINK.
Je zal hier de volgende opties zien;
aarch64/
armel/
armhf/
ppc64le/
s390x/
x86_64/
Voor mijn situatie "ARMv7 Processor rev 4 (v7l)" heb ik de versie nodig vanuit "armhf".
De "armel" is voor de oudere 32bit ARM technologie. De "armhf" is voor de versie 7 ARM CPU.
De overige architecturen (Als ze in de synology zitten) kunnen via DSM Docker installeren.
Let op:
Het is verleidelijk om de laatste versie te pakken van de "armhf" docker installatie. Deze zal helaas niet draaien en de synology zal in latere stappen terug komen met de melding: "segmentation fault error".
Hou het bij versie 19.03.8. Deze is stabiel en zal zonder problemen draaien.
Stap 5: Download de Docker instance
In de volgende commando's gaan we naar de root folder waarin we wat mappen aanmaken.
Hierin gaan we de docker instance in downloaden en uitpakken.
root@Batmobile1:~# cd ~/ root@Batmobile1:~# mkdir docker_install root@Batmobile1:~# cd docker_install root@Batmobile1:~/docker_install# wget https://download.docker.com/linux/static/stable/armhf/docker-19.03.8.tgz --2022-01-26 22:48:28-- https://download.docker.com/linux/static/stable/armhf/docker-19.03.8.tgz Resolving download.docker.com... 18.66.2.61, 18.66.2.9, 18.66.2.64, ... Connecting to download.docker.com|18.66.2.61|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 58315969 (56M) [application/x-tar] Saving to: 'docker-19.03.8.tgz' docker-19.03.8.tgz 100%[===================>] 55.61M 26.8MB/s in 2.1s 2022-01-26 22:48:31 (26.8 MB/s) - 'docker-19.03.8.tgz' saved [58315969/58315969] root@Batmobile1:~/docker_install# tar xvf docker-19.03.8.tgz docker/ docker/docker docker/docker-proxy docker/containerd docker/ctr docker/runc docker/docker-init docker/dockerd docker/containerd-shim root@Batmobile1:~/docker_install#
Stap 6: De installatie van Docker
Verificatie:
Gebruik het commando "pwd" en verifieer je of in de volgende locatie bent: "/root/docker_install".
Mocht je in "/root/docker_install/docker" zijn, gebruik dan het commando "cd /root/docker_install".
Kopieer de bestanden uit de map "docker" naar "/usr/bin".
cp docker/* /usr/bin/
Maak een map aan waar je je containers wil draaien. Ik heb dit op "Volume 1" staan maar pas dit aan naar waar je het wil.
mkdir /volume1/docker
Nu gaan we een configuratie file aanmaken voor docker zodat hij de eerder aangemaakt map ook gaat gebruiken. Dit kan je doen door de volgende commando's uit te voeren.
mkdir /etc/docker cat > /etc/docker/daemon.json
Een tekst veld zal naar voor komen in je terminal. Kopieer het volgende (Pas het volume aan als je deze in de vorige stap gewijzigd hebt), plak het erin met "ctrl + v" en sluit het meteen af met "ctrl + d".
{ "storage-driver": "vfs", "iptables": false, "bridge": "none", "data-root": "/volume1/docker" }
Start hierna docker door het commando "dockerd" te draaien.
root@Batmobile1:~/docker_install# dockerd
Het kan dat je de volgende error tijdens het opstarten tegen komt:
iptables failed: iptables -t nat -N DOCKER: iptables v1.8.3 (legacy): can't initialize iptables table `nat': iptables who? (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.
De errors zijn op te lossen door het volgende commando uit te voeren:
root@Batmobile1:~/docker_install# modprobe iptable-nat root@Batmobile1:~/docker_install# reboot
Nadat de NAS herstart is kun je opnieuw inloggen met SSH, zorg wel ervoor dat je terug root toegang krijgt.
Start nogmaals "dockerd" en als de instance blijft draaien zonder foutmeldingen open een aparte SSH sessie en log hier op in met hetzelfde account.
root@Batmobile1:~/# docker run hello-world
Als alles goed gaat en docker werkt zal je het volgende zien in je SSH:
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm32v5) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
Sluit alle terminals en open een nieuwe terminal sessie met root toegang.
Stap 7: Docker laten starten als een service
Je hebt nu docker werkend maar zodra je je terminals afsluit zal ook docker stoppen. Dit is natuurlijk niet wenselijk dus gaan we een service aanmaken zodat Docker opstart met de NAS als een service.
root@Batmobile1:~/# cd /etc/systemd/system cat > /etc/systemd/system/docker.service
Kopieer de volgende tekst, plaats het met "ctrl + v" in je terminal en sla het op met "ctrl + d"
[Unit] Description=Service Docker [Service] ExecStart= ExecStart=/usr/bin/dockerd Restart=always [Install] WantedBy=multi-user.target
De volgende commando's gaan ervoor zorgen dat de systemctl (De verzorger van de "services/daemons") de nieuwe file ziet die we net aangemaakt hebben. Hierna gaan we de docker service starten en de status controleren. Het is wel handig om te weten of hij ook start voor we hem instellen om te starten bij het aangaan van de Synology.
root@Batmobile1:~/# systemctl daemon-reload root@Batmobile1:~/# systemctl start docker.service root@Batmobile1:~/# systemctl status docker.service ● docker.service - Service Docker Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-01-14 17:56:49 CET; 1 weeks 5 days ago Main PID: 16438 (dockerd) CGroup: /system.slice/docker.service ├─16438 /usr/bin/dockerd ├─16447 containerd --config /var/run/docker/containerd/containerd.... └─16545 containerd-shim -namespace moby -workdir /volume1/docker/c... Jan 14 17:56:50 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:50.9107305..." Jan 14 17:56:51 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:51.6896335..." Jan 14 17:56:52 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:52.3096108..." Jan 14 17:56:52 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:52.7994133..." Jan 14 17:56:52 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:52.9228347...5 Jan 14 17:56:53 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:53.1553093..." Jan 14 17:56:53 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:53.1575248..." Jan 14 17:56:53 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:53.1723065...8 Jan 14 17:56:53 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:53.1725428..." Jan 14 17:56:53 Batmobile1 dockerd[16438]: time="2022-01-14T17:56:53.3064834..." Hint: Some lines were ellipsized, use -l to show in full. root@Batmobile1:~/# systemctl enable docker.service
Stap 8: OPTIONEEL: Installatie van PiHole
Zorg ervoor wanneer je het volgende in je terminal invoert dat de volgende waardes aangepast zijn:
WEBPASSWORD - Zorg hiervoor dat je een nieuw wachtwoord gebruikt deze is nodig om in PiHole in te loggen.
ServerIP = Vul hier het IP in van de NAS
Volumes = Vul hier de volume in waarin je docker hebt geprogrammeerd:
root@Batmobile1:~/# docker run -d --name=pihole \ -e WEB_PORT=8080 \ -e WEBPASSWORD=RandomPassword \ -e ServerIP=192.168.1.1 \ -e DNSMASQ_LISTENING=local \ -v /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d \ -v /volume1/docker/pihole/pihole:/etc/pihole \ --net=host \ --restart always \ pihole/pihole:2022.02.1
Als je alles goed gedaan hebt kun je PiHole openen vanuit je NAS via poort 8080.
Je kan deze container gebruiken om al je eigen DNS verkeer heen te sturen.
HELP! Docker start niet meer na een update van DSM!

Na een update van DSM kan het voorkomen dat docker niet meer opstart.
Als je de service status bekijkt, nadat je een start commando gestuurd hebt, is ook een fail start error.
De service kon niet gestart worden, welke verwijst naar de files in /usr/bin/ omdat deze er niet meer zijn.
Je kan docker opnieuw downloaden en naar de /usr/bin folder kopieren zoals omschreven in de start post.
Hierna kan ja de service weer starten.
HELP! PiHole start niet meer na een container update!
Vandaag wilde ik docker updaten naar de laatste versie maar nadat ik de release notes las ik dat oudere systemen deze versie niet meer kunnen draaien zonder problemen. Eigenwijs zoals ik ben heb ik het toch gedaan en merkte dat de CPU load op 100% sprong en ik klaar was met docker,Pihole en de gehele NAS.
Na een harde herstart van de NAS en het disablen van de docker service heb ik op "/volume1/docker" de "pihole" map verwijdert inclusief de "containers" map. Hierna ben ik gaan zoeken welke versie er nog wel draaide op de NAS. Dit blijkt docker 2022.2.1 te zijn.
Voor zij die nog niet naar de laatste versie zijn gegaan kunnen het volgen de doen:
docker stop pihole <--- Stopt de container docker container prune <-- Verwijdert alle gestopte containers root@Batmobile1:~/# docker run -d --name=pihole \ -e WEB_PORT=8080 \ -e WEBPASSWORD=RandomPassword \ -e ServerIP=192.168.1.1 \ -e DNSMASQ_LISTENING=local \ -v /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d \ -v /volume1/docker/pihole/pihole:/etc/pihole \ --net=host \ --restart always \ pihole/pihole:2022.02.1
[ Voor 16% gewijzigd door d5stick op 18-05-2022 16:44 ]