Migrate Docker Volumes from one Host to another // backup and restore

Sdílet
Vložit
  • čas přidán 15. 07. 2024
  • Migrate Docker Volumes, and how to access data inside a Docker Volume? I'll show you how you can easily back up and restore Docker Volumes and move the container data to another host. #Docker #Volumes #HomeLab
    Backup in Linux Servers - Docker Volumes, and Databases: • Backup in Linux Server...
    Docker Documentation: docs.docker.com/storage/volumes/
    My Docker CLI Cheat-Sheet: github.com/christianlempa/che...
    Follow me:
    TWITTER: / christianlempa
    INSTAGRAM: / christianlempa
    DISCORD: / discord
    GITHUB: github.com/christianlempa
    PATREON: / christianlempa
    MY EQUIPMENT: kit.co/christianlempa
    Timestamps:
    00:00 - Introduction
    00:43 - How Docker stores data in containers
    01:36 - Docker Volumes or Binds
    02:05 - Some example Volumes and Binds
    03:52 - Access files inside named Volumes
    04:21 - Backup, Restore and Migrate data
    ________________
    All links with "*" are affiliate links.

Komentáře • 101

  • @ruwn561
    @ruwn561 Před 2 lety +45

    You haven’t compressed the tar, you need the z options.

    • @christianlempa
      @christianlempa  Před 2 lety +13

      Oh damn, you're right! I just updated the cheat-sheet on github ;)

    • @patricknelson
      @patricknelson Před 2 lety +5

      I’m so used to seeing “z” there that it stood out to me, too. For beginners: Don’t forget to then also suffix “.gz” to the file name (to indicate that it’s also a compressed gzip file that then contains a tarball).

    • @WokeSoros
      @WokeSoros Před rokem +3

      How about a video about using Portainer’s backup feature?

    • @jazzyjay5062
      @jazzyjay5062 Před rokem +3

      @@WokeSoros Does portioner have a backup feature?

  • @livingmadscientistlife
    @livingmadscientistlife Před 2 lety +2

    Outstanding mate, from a Computer Scientist and a Professor, you have a great talent and a great team.
    All my best.

  • @dastiffmeister1
    @dastiffmeister1 Před 2 lety +3

    offen/docker-volume-backup is an absolute blessing to easily automate docker volume backups.

    • @christianlempa
      @christianlempa  Před 2 lety

      Yeah that's a great suggestion! Maybe at some point it's worth another video ;)

  • @quintinfick8050
    @quintinfick8050 Před 5 měsíci

    Perfect Christian, exaclty what I was looking for! Will help me restore a clients data to their VMware VM containers. :)

  •  Před 2 lety +2

    One of the best videos ever! Very useful!

  • @simonromanski401
    @simonromanski401 Před 2 lety +11

    You can't beat the amount of useful content that is packed into each episode.

  • @ThomasTomchak
    @ThomasTomchak Před 2 lety +7

    Thank you for doing this tutorial. The more I learn about docker the more excited I get about what it can do.
    I was able to get your backup command to work perfectly and to scp that file over to the new host. However, I can not get the restore to work at all. In this video you stopped short of demonstrating the restore, I assume because it was obvious to most. However I'm falling short of knowing what's going wrong. I keep getting PATH errors related to "bash" executable, and I'm not even sure how to track that down since I don't understand what it's trying to tell me.
    I would be most grateful if you covered restoring using your one-line command in a future video.
    Thank you for the content that you put out. It's most appreciated.

  • @alfredoalarconyanez4896

    Thank you very much for all your videos, they are awesome

  • @marcelk.4371
    @marcelk.4371 Před 2 lety

    Bester Mann 😀
    Danke für all deine hilfreichen und interessanten Videos!

  • @mukhammadaminabdullaev4768

    Content that you created is much clear and useful ) . Keep making more content. We will be wait content about `Kubernetes` for upcoming sessions.

    • @christianlempa
      @christianlempa  Před 2 lety

      Thank you so much! And yeah more Kubernetes content is coming in the future 😁

  • @sawwwru
    @sawwwru Před 2 lety

    Exactly what I needed.

  • @bc.export5542
    @bc.export5542 Před 11 měsíci +1

    Clear and understandable. U r genius

  • @cybersecurehacks
    @cybersecurehacks Před 2 lety

    oh yes.. Another awesome one.

  • @arkanjo7509
    @arkanjo7509 Před rokem +1

    thank you so much

  • @amm1go
    @amm1go Před 10 měsíci +2

    how i could make backup and restore when in 1 container i have many volumes. for example container with zabbix which consist from mysql\ssl\snmptraps\keys volumes???

  • @joelfankam3719
    @joelfankam3719 Před rokem

    thanx , youe ease my job

  • @m0rthaus
    @m0rthaus Před 2 lety +6

    @6:20 I just want to add that the PWD variable is an acronym that stands for Present Working Directory. I hope that helps someone remember the variable function, it helped me.

    • @alanjrobertson
      @alanjrobertson Před 2 lety +4

      Almost 😊 It actually stands for print working directory

  • @salimdawod9392
    @salimdawod9392 Před 2 lety +1

    Thx bro for the great explanation, But i have a point in restore section which I've got while doing it on Mysql docker volume,
    unfortunately the restore command here won't work when use it on mysql container so I had to create a new volume and extract the backup file into it before running the new container.

  • @francoisvandermerwe551

    Hi Christian, thanks so much for this video, super helpful. I am however not seeing the devops folder in order to test the backup and restore commands you use. Could you please advise?

  • @rollbacked
    @rollbacked Před rokem

    (assuming everything is binded) Alternatively, can I just copy the directory where I made folders for my containers in a tarball and export my container config as stacks, then in my fresh install - copy over your existing directories to where they once were and re-deploy the containers with stacks (.yaml files) that I exported?

  • @kalaiyarasansivaji4005

    How can we run that migrate command for the container which is having more than one container path?

  • @incstudios5916
    @incstudios5916 Před 5 měsíci

    or you could just compress the binded docker volume directory with tar and scp it to the binded location then run the docker stack with the binded volumes, i did that, after getting stuck. It worked beautifully, next create a cron script that backup the data to a backup server. Quick question if there are different addition of data into the container from different servers how do i combine the new changes into one server?

  • @hansphung
    @hansphung Před 2 lety

    This is really good, thank you :).
    Is there a way to migrate or clone an app running with docker-compose, which has both named and bind volumes?

    • @christianlempa
      @christianlempa  Před 2 lety +2

      Thank you! :) You can use the same technique to backup binds as well. It doesn't make a huge difference if the container was deployed via dockercli, portainer, or docker-compose.

  • @EduardoRodriguez-fu4ry

    I'm currently hosting a nextcloud container on a Raspberrypi and want to move it to a desktop computer that will function as my new server (both running Ubuntu). Is this the prefer method to move my data from one machine to another? Would you suggest just backing up the data and create a new container 'From the scratch'? I don't have any 'special' apps on Next cloud. I am using it exclusively as cloud storage

  • @hatt5350
    @hatt5350 Před rokem

    Good day Mr. Lempa, I hope you are doing well! I have a question for you. Suppose I had a Docker Swarm that, at the moment, consists of 4 raspberry pi 4s each with a 500gb m.2 SSD drive plugged into them. Suppose further that I am also running Portainer to manage my containers. Now suppose that what I want to achieve is data persistence across these 4 Nodes so that if, say, the node containing the data for my Gitea instance goes down and maybe even stays down, another node should start up the service and also still have the necessary data. Any idea on how I could achieve this?
    You see what I mean?

  • @ipelezikis
    @ipelezikis Před rokem +1

    Can't see cheat sheet of the video at the description link.

  • @giftcp82
    @giftcp82 Před 2 lety +3

    HI. I am getting the error "docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown." when I try to restore. Please point me in the right direction

    • @christianlempa
      @christianlempa  Před 2 lety

      Haven't had this issue before unfortunately :/ Maybe you can ask on our discord if someone has seen this before?

    • @aokijikuzan6453
      @aokijikuzan6453 Před 2 lety +3

      Has the same problem, found the solution;
      Instead of
      docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox bash -c "cd CONTAINERPATH && tar xvf /backup/backup.tar --strip 1"
      use
      docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox /bin/sh -c "cd CONTAINERPATH && tar xvf /backup/backup.tar --strip 1"

    • @giftcp82
      @giftcp82 Před 2 lety

      @@aokijikuzan6453 thanks I will try that

    • @TheDarkLordXXL
      @TheDarkLordXXL Před 2 lety +1

      @@aokijikuzan6453 nice it worked for me, THANKS !!!

  • @hamhumtube
    @hamhumtube Před rokem +2

    what if container has more CONTAINERPATH?

  • @ronald0122
    @ronald0122 Před 2 lety +1

    You are my favorite bald online friend

  • @theitzone01
    @theitzone01 Před rokem

    My Raspberry Pi Lite OS runs on a 64GB Micro SD card boot drive and I have a secondary 2TB SSD to store data in. I plan to install Jellyfin and PhotoPrism and NextCloud which requires installing Maria MySQL Data Base. What has me confused is how I specify all docker data storage for PhotoPrism, JellyFin and Nextcloud to take place on the 2TB SSD drive and not the 64GB Micro SD card boot drive? Do you have a video that shows correct docker Volume syntax that enables data to get stored onto a 2TB SSD secondary data drive?

  • @mikeheck4998
    @mikeheck4998 Před 2 lety

    Perfect Video. Thank You. I hope is corect wrided. My english is Not god. But i understand you.

  • @ClAddict
    @ClAddict Před 2 lety +1

    One thing I don’t understand about Volumes is they seem built for hello-world sized projects on a single drive systems. Volumes seem neat, but a restricted alias of Binds which doesn’t allow you to specify which drive you want data stored. Most my docker use cases require data storage that exceeds my OS drive size, but that’s where volumes stores data because it’s built into docker, not on my Data drive. Is there something I’m missing about Volumes that would make them useful for larger storage needs?

    • @metaversegaming1577
      @metaversegaming1577 Před rokem

      Step:1 Stop docker services
      sudo systemctl stop docker
      sudo systemctl stop docker.socket
      sudo systemctl stop containerd
      Step:2 make new root directory structure
      sudo mkdir -p /new_dir_structure
      Step:3
      sudo mv /var/lib/docker /new_dir_structure
      Step: 4 Create daemon.json abd add the following
      sudo vim /etc/docker/daemon.json
      {
      "data-root": "/new_dir_structure/docker"
      }
      Step:5 Restart docker (Give 777 permission / change root ownership of the folder if needs)
      sudo systemctl start docker
      Step:6 check/verify the changed location by
      docker info -f '{{ .DockerRootDir}}'

  • @Harmacist_TX
    @Harmacist_TX Před 2 lety

    I'm new to docker, but could you not mount the volume inside a path instead of a named path and just use normal methods to back it up?
    Edit: Found your content the other day and want to give you props for your information and delivery.

    • @christianlempa
      @christianlempa  Před 2 lety

      Thanks mate, yeah you can simply work with just binds, but I thought it might be useful for people to know how to migrate in case they use named volumes.

  • @sugizoakino2219
    @sugizoakino2219 Před 2 lety

    Is there any way I can do this on Heroku? It accepts commands by Shell. I'm using a bot, but the docker image was archived by the admin. Can you help me? I don't understand any of this. I just wanted to backup this docker and upload on dockerhub to help others who don't have a bot working before adm archived everything. Could you help me, please?

  • @gdevelek
    @gdevelek Před rokem

    How reliable is the backup if the container is running and accessing it while you make the tar? Hmmm....

  • @shashankmarri1056
    @shashankmarri1056 Před 2 lety +1

    Hi, when I try to generate the tar file, I get this error
    can't open '/backup/backup.tar': No such file or directory
    could you please help.

    • @Seff2
      @Seff2 Před rokem

      Same problem. Didi you find a solution? Edit: Never mind, I was using the wrong docker container in the command.

  • @TariqSajid
    @TariqSajid Před 2 lety

    can you make tutorial on how to run multiple services in same docker container ?

  • @ManfredRotgers
    @ManfredRotgers Před 2 lety +1

    Hi, great video thnx
    I have a nginx container on a pi that I want to move to docker on proxmox, but this container has multiple paths. do I need to run the backup command multiple times?
    Host/volume Path in container
    /home/pi/nginx/data /data
    /home/pi/nginx/letsencrypt /etc/letsencrypt
    /home/pi/nginx/config.json /app/config/production.json

    • @christianlempa
      @christianlempa  Před 2 lety

      If you can back it up on the host with one command thats fine, guess it isn't a DB.

    • @ManfredRotgers
      @ManfredRotgers Před 2 lety

      @@christianlempa in the CMD you explain, only one path, I have three different paths. And the db is a separate container

  • @Christian_Ky
    @Christian_Ky Před 2 lety

    Hi @Chris, just wanna let you know, u had exposed you admin token @3:40
    Thanks for the superB video!

    • @christianlempa
      @christianlempa  Před 2 lety +1

      Thanks! That's on my old server, but thanks for the hint!

  • @camixxx
    @camixxx Před 2 lety +2

    Looks like you need to update your cheat sheet repo's readme cause a lot of the links are broken.

  • @maddish1984
    @maddish1984 Před 9 měsíci

    Hi there - I'm struggling to get my portainer instance to run via the web GUI- I have no idea how its become the way it has, i've not changed anything's actively and can only assume an update has been done passively. I've had a look around and I can't see any ports applied to the container - this maybe a red-herring but wanted to address this first just in case.
    "docker ps -a | grep portainer
    33f01ee62da7 portainer/portainer-ee:latest "/portainer" 3 months ago Restarting (2) 36 seconds ago portainer"
    This is what im seeing... Please help if you can.

  • @tromtrom009
    @tromtrom009 Před rokem

    Hi, wenn ich das auf meinem raspberry pi ähnlich mache wie du beschreibst (aber ohne busybox) und am Ende auf dem neuen Raspberry Pi "sudo docker load -i image.tar " eingebe, erscheint immer: no such file or directory
    an was kann das liegen?
    Ich starte meinen alten pi von SD karte. an USB hängt die neue M.2 SSD, auf welcher der neue pi schon funktionsfähig installiert wurde und welche einfach als usb-stick gemountet ist. dort kopiere ich die tar-datei hin.
    Dann starte ich von dieser SSD und will die tar mit dem genannten befehl wieder verfügbar machen..... :(

  • @midkaa
    @midkaa Před 2 lety

    Just 30 mins ago i was thinking about backupping my docker databases

  • @fauzifauzi2129
    @fauzifauzi2129 Před 2 lety

    Hi there, I tried restoring compressed backup with your cheat sheet, but it doesn't work with busybox image. Then I tried using ubuntu image and it works.

    • @christianlempa
      @christianlempa  Před 2 lety

      Can you open an issue on the github repo? That would be nice, I'll take a look then.

  • @damianortiz
    @damianortiz Před rokem

    no encuentro el Cheat-Sheets del que hablas

  • @arwendrew3393
    @arwendrew3393 Před 2 lety

    What about if you have a couple containers being ran by docker-compose?

    • @christianlempa
      @christianlempa  Před 2 lety

      Should work the same way, with docker-compose.

    • @arwendrew3393
      @arwendrew3393 Před 2 lety

      @@christianlempa What if there is no mount point when I inspect the container?

  • @moroccan2739
    @moroccan2739 Před 2 lety

    I can't find your devops cheat-sheets. Its just me?

  • @gavin4981
    @gavin4981 Před rokem

    Dust against the mailer in in time setting

  • @hohojimmy4443
    @hohojimmy4443 Před 2 lety

    It’s very simple,police finding me now

  • @deansouth8
    @deansouth8 Před 10 dny

    Captain busy box doesn't elaborate at all what that should be if we don't use it super special busy box personal preference configuration he uses.

  • @TheFriso1234
    @TheFriso1234 Před 2 lety

    Why not just use something like Duplicati for this?

    • @christianlempa
      @christianlempa  Před 2 lety +1

      The main focus is on migration, so it's important to know how to do it manually. But Duplicati is also a topic that I've covered in the past, therefore I've put it in the description and as a "watch next" suggestion ;)

    • @TheFriso1234
      @TheFriso1234 Před 2 lety +1

      @@christianlempa I absolutely found value in the video. It's crucial to understand how these things are done manually for any kind of real understanding of your system. Thank you for the reply.

  • @jimmertzos3967
    @jimmertzos3967 Před rokem

    Github Link doesnt work, the page you showcase is nowhere to be found !!

  • @Jesscolonel
    @Jesscolonel Před 3 měsíci

    You run an image not a container. You start a container. And --rm remove the container file system after using it. It doesnt remove other containers

  • @howling-wolf
    @howling-wolf Před 5 měsíci

    Please do not use scp anymore. It is deprecated. Rsync is a more robust, faster and more reliable solution for copying files between servers.

    • @christianlempa
      @christianlempa  Před 5 měsíci

      Thanks for the heads-up! I'm going to have a look :)

  • @kittyyyyyyyy
    @kittyyyyyyyy Před rokem

    Sir, half of you video got deleted in editing.

  • @Seff2
    @Seff2 Před rokem +3

    you really should have taken the 3 minutes to also explain how to restore an image with the backed-up file. Becuase the command in your cheat sheat is really confusing, and its unclear if i have to create the image first, or what container names I should use in the command....

    • @christianlempa
      @christianlempa  Před rokem +3

      Good point, I even looked at my cheat-sheets yesterday and had a hard time understanding the command again :D
      I'll give a quick update with more explanation on the docs, soon. Thanks for the headsup!

    • @t288msd
      @t288msd Před 11 měsíci

      @@christianlempa I created a pull request for this today (wth everything but the command to be added because I, too, don't know)

  • @blackburn116
    @blackburn116 Před rokem

    For Windows users without WSL2 replace $(pwd) with %cd% in the backup a container command:
    docker run --rm --volumes-from CONTAINER -v %cd%:/backup busybox tar cvfz /backup/backup.tar CONTAINERPATH