TrueNAS Scale standardowy Docker + Portainer 4


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 *

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

4 komentarzy do “TrueNAS Scale standardowy Docker + Portainer

  • Zbigniew

    Może cos napiszesz na temat aktualizacji „docker-compose”?
    Ogólnie to walczę z VM które nie sposób zmusić do działania z siecią i Internetem.
    Nic nie działa, no kompletnie nic.
    Wygląda to tak, że VM podłączony do bridge nie dostaje Internetu.

    • sloniupl Autor wpisu

      Wersja docera i docer compose jest taka jaka jest w TrueNas Sacale i nie aktualizuje się bez aktualizacji TrueNas Scale.
      Jeśli chodzi ci o aktualizację portainera to wystarczy uruchomić skrypt upgradeportainer.sh i to zaktualizuje portainer.

  • Zbyszek M.

    Witaj,
    Dziękuje za ten pożyteczny wpis. Dzięki niemu od dobrego miesiąca działa u mnie portainer. Znaczy działał bo wczoraj rano cos złego się stało czego nie potrafię wytłumaczyć. Na początku kiedy zainstalowałem portainera wg. pańskiego opisu robiłem testy jak się zachowaja kontenery po planowym resecie i zgodnie z przewidywaniami wszystko wracało do normy. Wczoraj rano doświadczyłem przerwy w dostawie prądu i ku mojemu zaskoczeniu prawie żaden kontener nie działał. MIałem Nextcloud, już nie mam. Miałem NGINX proxy, równiez padł i zaginął. Jedyny który się ostał to urbackup. Czy może mi pan podpowiedzieć gdzie może tkwić błąd? Portainer jakby nie widzi starych kontenerów i volumes. Czy jest jakis sposób żeby go zmusić do poprawnego działania?

    • sloniupl Autor wpisu

      Hej, jeśli zaktualizowałeś do najnowszego TrueNAS Scale to wykonaj poniższe polecenia w konsoli jako root:
      chmod +x /usr/bin/docker-compose
      chmod +x /bin/docker-compose

      Od wersji 22.02.1 wyłączyli „normalny” docer-compose ale na szczęście nie usuneli go wiec możesz włączyć ponownie.