Instalacja Docker/Moby w Fedora 32

Użytkownicy nowej wersji systemu ze stajni „Czerwonego Kapelusza” napotkają problem przy próbie instalacji Dockera. Nie ma go w najnowszych repozytoriach, podpięcie repo ze strony Dockera skutkuje błędami, podobnie jest ze skryptem instalacyjnym dostępnym na stronie docker.com.
Zagłębiając się szybko w temat, okazuje się, że Docker został usunięty z repozytoriów Fedory (sic! – ja właśnie po to przesiadłem się na Fedorę, by wygodnie korzystać z konteneryzacji!). To dziwne, bo na wielu stronach Fedora jest polecana jako jedna z najwygodniejszych dystrybucji dla deweloperów, devopsów, itp…

OK, przechodząc do sedna – Docker został zastąpiony przez projekt Moby. 🙂

„Docker uses the Moby Project as an open R&D lab.”

Solomon Hykes

Moby jest w pełni zgodny z Dockerem, jest zupełnie wystarczający do codziennej pracy i nauki w prywatnym zakresie.

Ale instalacja w Fedora 32 i wyżej nadal sprawia problemy.
Od wersji 31 Fedora korzysta z nowej wersji cgroups – funkcji kernela służącej do zarządzania procesami.
Docker, a co za tym idzie Moby, nie jest kompatybilny z cgroups v2, dlatego należy przełączyć system na poprzednią implementację (wymagany restart systemu):

$ sudo dnf install grubby
$ sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
$ sudo systemctl reboot

Po restarcie możemy przystąpić do instalacji Moby’ego :

$ sudo dnf install moby-engine docker-compose

Dodatkowo możemy dorzucić pakiety:
– moby-engine-nano – podświetlenie składni Dockerfile w nano
– moby-engine-vim – podświetlenie składni Dockerfile w vim
– moby-engine-zsh-completion – uzupełnianie poleceń w zsh

Po instalacji aktywujemy daemona systemowego i restartujemy system:

$ sudo systemctl enable docker
$ sudo systemctl reboot

Aby korzystać z dockera na koncie zwykłego użytkownika konfigurujemy odpowiednią grupę:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

Teraz możemy odpalić nasz pierwszy kontener:

$ docker run hello-world

Instalacja i konfiguracja geoip dla iptables

Photo by Kevin Horvat on Unsplash

Update APT i instalacja niezbędnych pakietów

$ sudo apt-get update && sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev -y

Instalacja modułów Perl (trwa długo):

$ sudo su –

#perl -MCPAN -e’install local::lib’

#perl -MCPAN -e’install Text::CSV_XS’

#exit

Instalacja źródeł kernela RPi-Source

$sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update

cd ~

./rpi-source

Instalacja pakietu xtables-addons z repozytorium git – kompilacja i instalacja

git clone git://git.code.sf.net/p/xtables-addons/xtables-addons

cd xtables-addons

./autogen.sh

./configure

make

sudo make install

Skopiowanie narzędzi do /usr/share

sudo mkdir /usr/share/xt_geoip

sudo cp /home/pi/xtables-addons/geoip/xt_geoip_dl /usr/share/xt_geoip/

sudo cp /home/pi/xtables-addons/geoip/xt_geoip_build /usr/share/xt_geoip/

Pobranie i update GeoIP Data

cd /usr/share/xt_geoip

sudo ./xt_geoip_dl

sudo ./xt_geoip_build -D . *.csv

Reboot

sudo reboot

Odpalenie depmod – załadowanie modułów kernela

sudo depmod

Test – blokowanie Chin, Ruskich, itd… 🙂

sudo iptables -A INPUT -m geoip --src-cc CN,RU,UA,TW -j DROP