簡體   English   中英

導出一個 Docker 容器,其中包含已安裝卷的內容

[英]Exporting a Docker container with contents of mounted volume

我正在嘗試導出一個 docker 容器,它使用已安裝的本地卷作為其根目錄,我使用docker run --privileged -v /path/to/local/files:/root --name cse303dev -it cse303來安裝它本地目錄。

將容器和本地掛載目錄的所有內容導出到某種簡單的 tar 文件中的最佳方法是什么? 然后我如何輕松地重新導入這個容器並運行它,以便我可以查看和使用從導出它的本地機器復制的所有這些文件? 這可能嗎?

您幾乎從不“導出”容器本身 容器通常旨在自由銷毀和重新創建。

在您的情況下,您已經將您關心的數據存儲在容器外部(在綁定安裝的文件夾中,這是最簡單的情況),因此您可以將該目錄樹復制到其他任何地方,然后運行容器的新副本那里。

(cd /path/to/local/files; tar cvzf ~/local-files.tar.gz .)
scp local-files.tar.gz there:
ssh there

mkdir files
(cd files; tar xvzf ../local-files.tar.gz)
docker run -v $PWD/files:/root cse303

如果您將數據存儲在命名卷中,這將更加棘手。 Docker 文檔描述了如何備份命名卷的內容,您必須通過該過程備份 go。

如果您想導出容器的全部內容(包括已安裝的卷,這可能不是一個好主意,具體取決於您已安裝的內容),那么您需要在容器內運行 tar 並 pipe 將數據輸出到文件中:

docker run --privileged -v /path/to/local/files:/root ${IMAGE_NAME} \
    tar -cf - -C / --exclude=proc --exclude=sys . | gzip > myfile.tgz

我強烈建議排除 /proc 和 /sys(如上例所示),否則您可能會遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM