【问题标题】:How to migrate volume data from docker-for-mac to colima如何将卷数据从 docker-for-mac 迁移到 colima
【发布时间】:2022-06-26 02:34:37
【问题描述】:

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

【问题讨论】:

    标签: docker docker-for-mac colima


    【解决方案1】:

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

    注意:您可能不想复制很多卷,因为它们是临时卷,您可以通过在 for 循环之前或之前添加 | grep "YOUR FILTER" 来忽略它们在awk之后。

    以下代码做了两个假设:

    1. 您已安装并运行 docker-for-mac
    2. 您正在运行科利马

    这就是您所需要的,现在将其复制并粘贴到您的终端中。无需触摸任何东西。

    (
    # 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
    )
    

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 2020-04-08
      • 2021-11-08
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多