- 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:
powyższe zapisze kopie wolumenów do
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
3. Mamy tylko działające kontenery .. to najpierw strzał w pustą pałę za brak dokumentacji !
Pobieramy
Następnie kopiujemy plik
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ć (....).
Ź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 kopiedocker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose $(docker ps -aq) > /share/Public/docker-compose.yml
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ć (....).