1

在将用作 ClearML 代理的 docker 映像中安装 S3 容器的最佳实践是什么?我可以想到 3 个解决方案,但目前无法使任何解决方案工作:

  1. 在 ClearML 中使用预制配置,特别是 CLEARML_AGENT_K8S_HOST_MOUNT。为此,S3 存储桶将使用rclone单独安装在主机上,然后重新映射到 docker。这似乎只适用于 Kubernetes 而不是 Docker——因此不起作用。
  2. 使用此处指定的 s3fuse 进行安装。问题是它可以与存储在 ClearML 浏览器会话中的 S3 存储桶密码一起使用吗?这似乎也很复杂,需要自定义 docker 镜像,更不用说以 --privileged 或类似方式运行 docker 镜像了。
  3. 使用1.0 发行说明中指定的“docker_args 和 docker_bash_setup_script 参数到 Task.create()”将参数传递给 docker 。这将类似于 (1),但参数将用于绑定安装卷。我没有看到太多关于如何将此新功能用于此目的的文档或示例。
4

2 回答 2

2

我建议您查看网关后面的存储网关 S3,您可以使用 NFS、EFS 或 S3 存储桶。

阅读更多:https ://aws.amazon.com/storagegateway/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc

有多种方法可以做到这一点。您也可以使用 CSI 驱动程序来连接 S3。

https://github.com/ctrox/csi-s3

如果可以使用 rclone 是不错的选择,它会将数据同步到 POD 主机系统,因为如果存在大文件,由于文件大小和网络延迟可能需要一些时间。

个人建议S3 是对象存储,所以如果您期待进行文件操作,例如写入文件或 zip 文件,根据我的个人经验,可能需要一些时间来进行操作。

请记住,s3 不是一个文件系统,而是一个对象存储 - 虽然挂载是一个非常有用的功能 - 我不会利用文件读取或创建以外的任何东西 - 不要尝试附加文件,不要尝试使用文件系统诡计

如果是这种情况,我建议对容器使用NFSSSD 。

而如果我们寻找s3fs-fuse它具有分段上传和 MD5 和本地缓存等优势。

您可以编写自己的脚本的最简单方法,该脚本将通过 HTTP 与 S3 存储桶的目录同步到本地目录,否则存储网关 S3是不错的选择。

Amazon S3 文件网关提供了一种无缝连接到云的方式,以便将应用程序数据文件和备份映像作为持久对象存储在 Amazon S3 云存储中。Amazon S3 文件网关通过本地缓存提供对 Amazon S3 中数据的基于 SMB 或 NFS 的访问。

于 2021-05-12T04:15:51.467 回答
0

我能够获得另一个完全可以工作的选项,即在 WSL 中安装一个驱动器,然后将其传递给 Docker。让我们开始吧:

为什么不在 Windows 本身中托管,为什么在 WSL 中进行 rclone?

在 Windows 中将驱动器挂载到 ClearML 中的步骤:

  • 您可以在 WSL 中安装 rclone,并且 docker 可以访问该挂载
    • 创建文件夹/data/my-mount(这需要在/data- 我不知道为什么,我无法通过 Google 搜索找到,但我在这里找到了它)
    • 您可以将配置文件放在 windows 中(使用--config选项)。
    • 注意:ClearML 不支持挂载路径中的空格,尽管 docker 支持。因此,您的路径必须是/data/my-mount而不是/data/my mount. 我打开了一个关于此的错误。
  • 您可以通过调用 docker 并挂载文件来测试挂载。
    • 例子:docker run -it -v \\wsl$\Ubuntu\data:/data my-docker-image:latest ls /data/my-mount
    • 注意:您必须挂载 /data 而不是 /data/my-mount,否则您可能会收到此错误:docker: Error response from daemon: error while creating mount source path
  • 现在,您可以这样设置 clearml.conf 文件C:\Users\Myself\clearml.conf
default_docker: {
   # default docker image to use when running in docker mode
   image: "my-docker-image:latest"

   # optional arguments to pass to docker image
   arguments: ["-v","\\wsl$\Ubuntu\data:/data", ]
}
  • 请注意,您也可以在 WSL 之外运行 clearml-agent,然后只需要指定["-v","/data:/data", ].
  • 在 cmd 中运行 clearml 代理:clearml-agent daemon --docker
于 2021-05-14T16:30:41.940 回答