Mariusz Borkowski - strona prywatna
Blog: Reinstalacja dockera w Debian Testing (Bookworm-Trixie)
Table of Contents
Reinstalacja dockera w Debian Testing (Bookworm/Trixie)
Ze względu na komunikat:
The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with BuildKit
który zaczął się pojawiać po próbach zbudowania obrazu Dockera
po użyciu komendy docker build
i który to błąd jest
opisany np. tutaj, zaistniała potrzeba reinstalacji dockera, który
do tej pory był zainstalowany poprzez repozytoria debianowe.
Podejście pierwsze - nieudane
Idąc za radą postanowiłem skorzystać z https://docs.docker.com/desktop/install/linux/ a konkretnie: https://docs.docker.com/engine/install/debian/. i zainstalować Docker Desktop polecany jako najłatwiejsza z metod.
Wykonane kroki opisane są poniżej, ale…
WAŻNA UWAGA!
Problem: Ostatecznie ten sposób zarządzania oprogramowaniem docker
w moim przypadku nie jest odpowiedni.
Repozytorium dockera
https://download.docker.com/linux/debian/dists/
zawiera pakiety dla różnych wersji Debiana, ale najwyższą z nich
jest wersja stable (w momencie pisania tego tekstu jest to
Bookworm). Ponieważ posiadam Debian w wersji testing
(Trixie) poniższe polecenia (wykonane zgodnie z instrukcjami) dodadzą
plik /etc/apt/sources.list.d/docker.list
o treści:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian trixie stable
a tego nie znajdziemy pod linkiem: https://download.docker.com/linux/debian/dists/.
Odinstalowanie pakietów dystrybucji
sudo apt remove docker.io docker-compose docker-doc podman-docker
Ponadto wymagane jest
Odinstalowanie dodatkowych pakietów zależnych
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
Aktualizacja listy pakietów
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
Instalacja najnowszej wersji docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Podejście drugie - instalacja ''manualna''
Zgodnie z https://docs.docker.com/engine/install/debian/#install-from-a-package
Jeszcze poprzednio tego nie zrobiliśmy to teraz odinstalujmy pakiety systemowe….
Odinstalowanie pakietów dystrybucji
sudo apt remove docker.io docker-compose docker-doc podman-docker
Pobieranie paczek deb odpowiednich dla Twojego systemu
Wybrać musimy stąd: https://download.docker.com/linux/debian/dists/
Znów nie mamy do wyboru trixie
. Trudno,
zainstalujemy najnowszą wersję, czyli bookworm
licząc na to, że w najbliższej przyszłości zmiany wprowadzane
w testing
nie ''rozjadą się'' z aktualnym stable
.
A więc stąd: https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/ pobieramy
containerd.io_<version>_<arch>.deb docker-ce_<version>_<arch>.deb docker-ce-cli_<version>_<arch>.deb docker-buildx-plugin_<version>_<arch>.deb docker-compose-plugin_<version>_<arch>.deb
przy czym pobieram wersje z tego samego dnia (najbardziej aktualne).
# :dir /sudo:: rm -rf ~/temp/docker-installation-debs mkdir ~/temp/docker-installation-debs
cd ~/temp/docker-installation-debs
wget https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/containerd.io_1.7.22-1_amd64.deb
wget https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce_27.3.1-1~debian.12~bookworm_amd64.deb
wget https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce-cli_27.3.1-1~debian.12~bookworm_amd64.deb
wget https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-buildx-plugin_0.17.1-1~debian.12~bookworm_amd64.deb
wget
https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-compose-plugin_2.29.7-1~debian.12~bookworm_amd64.deb
Instalujemy:
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \ ./docker-ce_<version>_<arch>.deb \ ./docker-ce-cli_<version>_<arch>.deb \ ./docker-buildx-plugin_<version>_<arch>.deb \ ./docker-compose-plugin_<version>_<arch>.deb
TODO Problem
UWAGA! Pakietów docker-ce
i docker-ce-cli
nie udało się
zainstalować. docker-ce
ponieważ zależy od docker-ce-cli
,
a docker-ce-cli
ponieważ ''konflikt pakietów''.
mb@debi:~/temp/docker-installation-debs$ sudo dpkg -i docker-ce_27.3.1-1~debian.12~bookworm_amd64.deb Wybieranie wcześniej niewybranego pakietu docker-ce. (Odczytywanie bazy danych ... 377078 plików i katalogów obecnie zainstalowanych.) Przygotowywanie do rozpakowania pakietu docker-ce_27.3.1-1~debian.12~bookworm_amd64.deb ... Rozpakowywanie pakietu docker-ce (5:27.3.1-1~debian.12~bookworm) ... dpkg: problemy z zależnościami uniemożliwiają skonfigurowanie pakietu docker-ce: docker-ce zależy od docker-ce-cli; jednakże: Pakiet docker-ce-cli nie jest zainstalowany. dpkg: błąd przetwarzania pakietu docker-ce (--install): problemy z zależnościami - pozostawianie nieskonfigurowanego Wystąpiły błędy podczas przetwarzania: docker-ce mb@debi:~/temp/docker-installation-debs$ sudo dpkg -i docker-ce-cli_27.3.1-1~debian.12~bookworm_amd64.deb Wybieranie wcześniej niewybranego pakietu docker-ce-cli. dpkg: w odniesieniu do docker-ce-cli_27.3.1-1~debian.12~bookworm_amd64.deb zawierającego docker-ce-cli: docker-cli w konflikcie z docker-ce-cli docker-ce-cli (wersja 5:27.3.1-1~debian.12~bookworm) jest przeznaczony do zainstalowania. dpkg: błąd przetwarzania archiwum docker-ce-cli_27.3.1-1~debian.12~bookworm_amd64.deb (--install): konflikt pakietów - nie będzie instalowany docker-ce-cli Wystąpiły błędy podczas przetwarzania: docker-ce-cli_27.3.1-1~debian.12~bookworm_amd64.deb
Mimo to docker działa:
sudo service docker start sudo docker run hello-world
Na chwilę obecną zignorowałem powyższe błędy i do pierwszych problemów działam na tym co mam… wiedząc, że być może trzeba będzie tu wrócić.
Zgodnie z tym co mamy tutaj: https://askubuntu.com/questions/1296017/what-does-docker-ce-cli-containerd-io-installation-packages-install teoretycznie nie powinienem potrzebować nie zainstalowanych pakietów…
Problem 2
Instalacja zepsuła zależności w systemie:
sudo apt upgrade Należy uruchomić "apt --fix-broken install", aby je naprawić. Niespełnione zależności: docker-ce : Wymaga: docker-ce-cli ale nie da się go zainstalować Poleca: docker-ce-rootless-extras ale nie da się go zainstalować Poleca: pigz ale nie jest zainstalowany Błąd: Niespełnione zależności. Proszę spróbować wykonać "apt --fix-broken install" bez pakietów (lub podać rozwiązanie).
Po wydaniu żądanej komendy mamy…
sudo apt --fix-broken install Naprawianie zależności... Gotowe Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej wymagane: docker-cli libjsoncpp25 libsort-naturally-perl jed-common libllvm17t64:i386 libu2f-udev kirigami-addons-data libllvm18 linux-image-6.10.4-amd64 libassuan0 libllvm18:i386 linux-image-6.10.6-amd64 libgeos3.12.2 libmfx1 linux-image-6.10.9-amd64 libgit2-1.7 libmodule-find-perl linux-image-6.9.12-amd64 libgspell-1-2 libmodule-scandeps-perl needrestart libhttp-parser2.9 libmozjs-102-0t64 python3-lib2to3 libintl-perl libpoppler-cpp0t64 slsh libintl-xs-perl libpoppler134 tini libjim0.82t64 libslang2-modules Aby je usunąć należy użyć "sudo apt autoremove". USUWANE: docker-ce Podsumowanie: Aktualizowanych: 0, Instalowanych: 0, Usuwanych: 1, Nieaktualizowanych: 1425 1 nie w pełni zainstalowanych lub usuniętych. Zwalniane miejsce: 111 MB Kontynuować? [T/n] y (Odczytywanie bazy danych ... 377089 plików i katalogów obecnie zainstalowanych.) Usuwanie pakietu docker-ce (5:27.3.1-1~debian.12~bookworm) ... needrestart is being skipped since dpkg has failed
Hmmmm….
No to w takim wypadku zresetowałem system… I teraz już można przeprowadzić upgrade bez problemu.
Aha! I kasujemy
/etc/apt/sources.list.d/docker.list
jako nie działające w debian.