Wiedza Migracja dockera między serwerami

SiewcaRyżu

Kimchi & Pikachu
Q's Architect
9 Październik 2023
949
3
643
93
23
QNAP
null
Ethernet
null
Generalnie sprawa wygląda prosto, ale jak zwykle diabeł tkwi w szczegółach ;)

Źródło:
1. Należy wykonać kopię wolumenów dockera które chcemy zmigrować (docker volume ls). Bindy z dockera raczej znasz i wiesz że musisz je przenieść do nowej lokacji :)
2. Należy wykonać kopię definicji kontenerów (docker-compose, czy docker run ...)
3. OPCJONALNIE, należy wykonać kopię obrazów (docker save XXX > /share/Public/XXX.tar)

Cel:
1. Odpalić dockery (z wykonanej kopii) , mogą się przydać obrazy z pkt 3.
2. Poczekać aż się włączą
3. Wyłączyć kontenery
4. Przywrócić pliki z źródłowego wolumenów - do docelowych wolumenów.
5. Odpalić kontenery i sprawdzić czy działają poprawnie.

Kopia wolumenów dockera:

Bash:
#!/bin/bash
echo "Getting docker volumes ..."
DOCKER_VOLUMES=$(docker volume ls -q)
VOLUMES=($DOCKER_VOLUMES)
echo "Getting docker volumes ... done!"

for volume in "${VOLUMES[@]}"
do
echo "Working on $volume ..."
# there should be only one mountpoint in volume - the ZERO
volume_path=$(docker volume inspect $volume | jq .[0].Mountpoint)
echo "$volume is mounted at $volume_path ..."

#execute action on volume mountpoint to backup ...
tar -cvf /share/Public/$volume.tar $volume_path
echo "Working on $volume ... done!"
echo ""
done

powyższe zapisze kopie wolumenów do /share/Public/

Kopia definicji kontenerów:
1. Mają pliki compose , to po prostu kopia plików na nowy serwer i tyle.
2. Mając polecenia zapisane w formie docker volume xxx create; docker run -d ..., po prostu odpalamy je na nowym serwerze (wiadomo poprawiając co trzeba).
3. Mamy tylko działające kontenery .. to najpierw strzał w pustą pałę za brak dokumentacji !
Pobieramy docker pull red5d/docker-autocompose i robimy kopie
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose $(docker ps -aq) > /share/Public/docker-compose.yml

1697185559758.png


Następnie kopiujemy plik /share/Public/docker-compose.yml na serwer docelowy i odpalamy za pomocą docker compose pull i docker compose up -d.
Ja zwykle w tym momencie, trzymam kciuki żeby się wszystko odpaliło.

Jeśli coś nie zadziała, to trzeba dowiedzieć się co nie działa i naprawić (....).
 
  • Lubię to
Reakcje: Kamil84
Kopia istniejącego obrazu (rzadko to się zdarza .. no ale) - jeśli masz swoje własne obrazy
docker save IMAGE_ID > /share/Public/IMAGE_ID.tar, gdzie IMAGE_ID (1) pobieramy z docker image ls
1697187079780.png

warto zapisać sobie TAGa(2) tego obrazu - bo po przekopiowaniu tego obrazu na nowy serwer, trzeba załadować obraz docker load -i /share/Public/IMAGE_ID.tar i ustawić mu taga docker tag IMAGE_ID REPOSITORY:TAG (popatrz na obrazek powyżej)
przykład
1697187962921.png
 
  • Lubię to
Reakcje: Kamil84

Użytkownicy znaleźli tą stronę używając tych słów:

  1. migracja