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.

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:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.