Domyślnie systemy oparte na Debianie i Ubuntu udostępniają Dockera w swoich własnych repozytoriach. Choć to wygodne, to jednak wersje tam dostępne często są starsze niż te oferowane przez oficjalne źródło download.docker.com.
Czy zmiana Dockera na wersję z oficjalnych repozytoriów wpłynie na istniejące kontenery? Odpowiedź brzmi: NIE. Docker przechowuje dane (obrazy, kontenery, wolumeny itp.) w katalogu /var/lib/docker
. Ten katalog nie jest usuwany ani przez apt remove
, ani przez instalację nowej wersji Dockera — o ile nie użyjesz purge
z usuwaniem danych.
Dlaczego warto przejść na oficjalne repozytorium Dockera?
- Nowsze wersje Dockera – oficjalne repozytorium oferuje aktualizacje znacznie szybciej.
- Lepsze wsparcie bezpieczeństwa i stabilności.
- Pełna kompatybilność z Docker Compose, Buildx, Volume Plugins i innymi funkcjami.
Przygotowanie do migracji Dockera
W pierwszym kroku należy upewnić się czy taka zmiana powinna mieć miejsce. Być może instalacja została wykonana z oficjalnych źródeł Docker. Aby to sprawdzić należy wykonać:
docker --version
apt list --installed | grep docker
Jeśli zobaczysz coś w stylu docker.io
, oznacza to, że Docker pochodzi z systemowego repozytorium.
Przystępujemy do zatrzymania Dockera przed deinstalacją:
sudo systemctl stop docker
Usuwamy tylko binaria Dockera, bez danych:
sudo apt remove docker docker.io containerd runc -y
Instalujemy Docker z oficjalnego skryptu
We wcześniejszym wpisie Docker Swarm w Home Lab w trakcie instalacji Dockera przed uruchomieniem klastra Swarm, wskazałem już na ten sposób instalacji. Dzięki temu w dwóch prostych krokach dodajemy oficjalne repozytoria, klucz GPG Dockera, instalujemy najnowszą wersję docker-ce
, docker-ce-cli
, containerd.io
. Wykonujemy:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Kiedy wszystko się wykona, sprawdzamy jeszcze wersję naszego Dockera:
docker --version
W moim przypadku pojawiła się informacja o wersji 28.2.2, a więc dokładnie takiej samej jak na drugim serwerze.
Sprawdźmy jeszcze czy wszystkie kontenery, obrazy i sieci, nadal są dostępne:
docker ps -a
docker images
docker volume ls
Niestety w moim przypadku nie zobaczyłem żadnego kontenera. Aby to naprawić należało uruchomić Dockera poleceniem sudo systemctl start docker
. Na koniec warto jeszcze sprawdzić czy nasz klaster Swarm również działa poprawnie:
docker node ls
W moim przypadku wszystko jest ok. Wersje Dockera są już wyrównane a klaster widzi się prawidłowo. W kolejnym wpisie spróbujemy postawić pierwszy kontener w naszym klastrze Swarm. Przy okazji przeprowadzimy testy redundancji naszego kontenera i wyjaśnimy nieco metody działania Docker Swarm.