首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将批量数据从docker-for mac迁移到colima

如何将批量数据从docker-for mac迁移到colima
EN

Stack Overflow用户
提问于 2022-02-25 15:35:01
回答 1查看 1.2K关注 0票数 1

如何将卷从docker-for-mac迁移到colima

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 15:39:15

将复制docker-for-mac中的所有卷并将它们移动到colima

注意:会有很多卷您可能不想复制,因为它们是临时卷,您可以忽略它们,只需将| grep "YOUR FILTER"添加到for循环中,无论是在awk__之前还是之后。

以下代码作了两个假设:

  1. 您已经安装并运行了
  2. ,您可以使用colima运行

这就是你所需要的,现在复制并粘贴到你的终端。没必要碰任何东西。

代码语言:javascript
复制
(
# set -x  # uncomment to debug
set -e

# ssh doesn't like file descriptor piping, we need to write the configuration into someplace real
tmpconfig=$(mktemp);

# Need to have permissions to copy the volumes, and need to remove the ControlPath and add ForwardAgent
(limactl show-ssh --format config colima | grep -v "^  ControlPath\|  ^User"; echo "  ForwardAgent=yes") > $tmpconfig;

# Setup root account
ssh -F $tmpconfig $USER@lima-colima "sudo mkdir -p /root/.ssh/; sudo cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys"

# Loop over each volume inside docker-for-mac
for volume_name in $(DOCKER_CONTEXT=desktop-linux docker volume ls | awk '{print $2}'); do 
    echo $volume_name;

    # Make the volume backup
    DOCKER_CONTEXT=desktop-linux docker run -d --rm --mount source=$volume_name,target=/volume --name copy-instance busybox sleep infinate; 
    DOCKER_CONTEXT=desktop-linux docker exec copy-instance sh -c "tar czf /$volume_name.tar /volume";
    DOCKER_CONTEXT=desktop-linux docker cp copy-instance:/$volume_name.tar /tmp/$volume_name.tar; 
    DOCKER_CONTEXT=desktop-linux docker kill copy-instance;

    # Restore the backup inside colima
    DOCKER_CONTEXT=colima docker volume create $volume_name;
    ssh -F $tmpconfig root@lima-colima "rm -rf /var/lib/docker/volumes/$volume_name; mkdir -p /var/lib/docker/volumes/$volume_name/_data";
    scp -r -F $tmpconfig /tmp/$volume_name.tar root@lima-colima:/tmp/$volume_name.tar;
    ssh -F $tmpconfig root@lima-colima "tar -xf /tmp/$volume_name.tar --strip-components=1 --directory /var/lib/docker/volumes/$volume_name/_data";
    
done
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71268183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档