将 HyperVM Iotedge docker 容器脱机文件复制到本地驱动器

问题描述 投票:0回答:1

我有一台带有 Hyper-V Linux VM 的 Windows 10 主机,并且安装了 IOT EdgeAgent 和 EdgeHub 模块。 我已向 EdgeAgent 和 Hub 提供了 storageFolder 挂载,以将脱机文件存储在 EdgeHub 容器中的 var/iotedge/storage 位置。

我想运行 docker 命令来复制此嵌套 VM 容器文件与主机 Windows 本地 C:/TempEdge 文件夹。

第1步:使用“connect-eflowVM”命令连接到IotEdge VM 步骤2: sudo docker cp EdgeHub:/var/iotedge/storage "c:/TempEdge"

但是它将“c”视为另一个容器,并抛出无法在容器之间复制错误。

我尝试将“c:/TempEdge”替换为“//c/TempEdge”和“c/TempEdge”

但是随后它会抛出 no such file directory 错误。

在 EflowVM (hyper-V) 中运行此查询并将数据复制到主机 Windows C 驱动器的正确格式或方法是什么

hyper-v docker-container file-copying azure-iot-edge docker-cp
1个回答
0
投票

我按照此链接通过Copy-EflowVmFile在 Windows 上使用适用于 Linux 的 Azure IoT Edge 的 PowerShell 函数。

先决条件:

  • 文章中提到的命令包含在

    AzureEFLOW.psm1
    文件中。您可以在系统上位于
    C:\Program Files\WindowsPowerShell\Modules\AzureEFLOW
    的 WindowsPowerShell 目录中找到此文件。

  • 如果 PowerShell 目录中缺少

    AzureEflow
    文件夹,则必须按照以下步骤在 Windows 上下载并安装适用于 Linux 的 Azure IoT Edge:

    • 在提升的 PowerShell 会话中执行与您的系统架构(X64/AMD64 或 ARM64)相对应的命令,以下载 Windows 上的适用于 Linux 的 IoT Edge。
    • 使用
      Start-Process
      命令在设备上安装 Windows 上的 IoT Edge for Linux。
  1. 设置执行策略:
    • 使用
      AllSigned
      PowerShell 命令将目标设备上的执行策略至少设置为
      Set-ExecutionPolicy

Copy-EflowVmFile
命令是一项旨在利用安全复制协议 (SCP) 将文件复制到虚拟机或从虚拟机复制文件的功能。

复制EflowVmFile:

Copy-EflowVmFile -fromFile "localpathtosource/file.txt" -toFile "remotepathonvm/file.txt" -pushFile
  • -fromFile
    :定义要从中复制的本地文件路径。
  • -toFile
    :定义要将文件复制到的虚拟机上的远程文件路径。
  • -pushFile
    :该标志决定复制方向。如果包含,则表示您正在将文件传输到虚拟机。如果省略,则表示您正在从虚拟机中检索文件。

有关该命令的详细信息,请使用

Get-Help
命令:

Get-Help Copy-EflowVMFile -Full

Enter image description here

Connect-EflowVm 命令建立与虚拟机的 SSH 连接。

Connect-EflowVm

确保在执行

Copy-EflowVmFile
命令之前在 EFlow 中创建文件夹。

mkdir Folder

Enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.