Blog o wszystkim o czym nie chciałbym zapomnieć.
Blog o wszystkim o czym nie chciałbym zapomnieć.

TrueNAS Scale standardowy Docker + Portainer

Po zainstalowaniu TrueNAS Scale na swoim nowym serwerze postanowiłem skonfigurować na nim Docker.

Ale wczytując się w temat dowiedziałem się że domyślnie TrueNAS Scale używa Kubernetes do obsługi kontenerów. Z punktu widzenia biznesowego / wielu serwerów oraz wysokiej dostępności usług jest to bardzo dobre, jednak w domowych warunkach posiadając tylko jeden serwer chciałem mieć dostęp do Portainera oraz normalnych kontenerów.

Z czasem poniżej opisany sposób przestanie działać więc polecam przetestować to jako zamiennik:

Rozwiązanie początkowo wydawało się dość trudne jako że TrueNAS Scale jest świeżym systemem ale na szczęście udało się 🙂

1. Pierwszy krok to stworzenie własnego pliku daemon.json który będzie na starcie podmieniał ten dostarczany z TrueNASem, tworzymy więc własny plik należy pamiętać aby w nim zmienić data-root na własną lokalizację gdzie mają trafiać domyślne ustawienia/pliki dockera również używane przez TrueNAS oraz dns ustawić na swój preferowany (u mnie wskazuje na pihole które mam skonfigurowane na raspberry pi):

{
        "data-root": "/mnt/dane/container/default",
        "exec-opts": ["native.cgroupdriver=cgroupfs"],
        "storage-driver": "zfs",
        "iptables": true,
        "bridge": "",
        "dns": ["192.168.1.10"]
}

2. Następnie tworzymy plik docker.sh (pamiętaj o uprawnieniach do wykonywania -rwxrwxr–) który będzie odpowiedzialny za podmienianie pliku konfiguracyjnego co spowoduje iż będziemy mogli kontrolować środowisko dockerowe. Należy pamiętać aby w poniższym skrypcie jako źródło wskazać swój stworzony wcześniej plik daemon.json:

#!/bin/bash

STATUS=0
while [ $STATUS -eq 0 ]; do

   STATUS2=$(systemctl is-active docker.service)

   if [ "$STATUS2" = "active" ]; then
   STATUS=1
   fi

done

    systemctl stop docker
    rm /etc/docker/daemon.json
    cp /mnt/dane/container/config/daemon.json /etc/docker/daemon.json
    systemctl start docker

3. Po stworzeniu tego skryptu uruchom go. To sprawi że środowisko kontenerowe będzie teraz przekierowane do wskazanego przez ciebie miejsca (/mnt/dane/container/default).

4. Kolejnym skryptem będzie upgradeportainer.sh instalujący a w przyszłości aktualizujący portainer:

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d -p 9000:9000 \
--name=portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest

Po jego stworzeniu i uruchomieniu (pamiętaj o uprawnieniach do wykonywania -rwxrwxr–) będziemy mieć dostępny Portainer na porcie 9000 pod IP naszego serwera TrueNAS (http://nasz.ip.servera:9000/):

Od tej pory możemy tworzyć dowolne kontenery:

5. Na koniec musimy dodać nasz skrypt docker.sh aby uruchamiał się po każdym starcie systemu TrueNAS.

Aby tego dokonać przechodzimy do System Settings > Advanced i w sekcji Init/Shutdown Scripts dodajemy wyzwalacz naszego skryptu:

U mnie jego ustawienia wyglądają następująco:

Gotowe 🙂

Linkografia:

https://xtremeownage.com/2021/12/15/truenas-scale-use-vanilla-docker/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.

4 komentarze “TrueNAS Scale standardowy Docker + Portainer”

Translate »