如何解决在 docker 中的 clearml 代理中挂载 S3 存储桶
在将用作 clearml 代理的 docker 映像中安装 S3 容器的最佳实践是什么?我能想到 3 种解决方案,但目前无法让任何解决方案发挥作用:
- 使用 prefabbed configuration in ClearML,特别是 clearml_AGENT_K8S_HOST_MOUNT。为此,S3 存储桶将使用 rclone 单独挂载在主机上,然后重新映射到 docker。这似乎只适用于 Kubernetes 而不是 Docker - 因此不起作用。
- 按照指定的 here 使用 s3fuse 挂载。问题是它可以与存储在 clearml 浏览器会话中的 S3 存储桶秘密一起使用吗?这似乎也很复杂,需要自定义 docker 镜像,更不用说以 --privileged 或类似方式运行 docker 镜像了。
- 使用 1.0 release notes 中指定的“docker_args 和 docker_bash_setup_script 参数到 Task.create()”将参数传递给 docker。这将类似于 (1),但参数将用于 bind-mounting the volume。我没有看到太多有关如何为此目的使用此新功能的文档或示例。
解决方法
我建议您查看网关后面的 Storage gateway S3,您可以使用 NFS、EFS 或 S3 存储桶。
有多种方法可以做到这一点。您也可以使用 CSI 驱动程序连接 S3。
https://github.com/ctrox/csi-s3
rclone 是一个不错的选择,如果您可以使用它,它会将数据同步到 POD 主机系统,因为如果有大文件,由于文件大小和网络延迟,可能需要一些时间。
个人建议 S3 是对象存储,因此如果您希望进行文件操作,例如写入文件或 zip 文件,根据我的个人经验,可能需要一些时间来进行操作。
请记住,s3 不是文件系统,而是对象存储 - 而 挂载是一项非常有用的功能 - 我不会利用 除了文件读取或创建之外的任何内容 - 不要尝试附加文件, 不要尝试使用文件系统技巧
如果是这种情况,我建议将 NFS 或 SSD 用于容器。
而如果我们寻找 s3fs-fuse,它有自己的分段上传和 MD5 和本地缓存等的好处。
您可以编写自己的脚本的最简单方法,该脚本将通过 HTTP 同步到本地目录与 S3 存储桶的目录,否则 存储网关 S3 是不错的选择。
Amazon S3 文件网关提供了一种无缝连接到云的方式 为了将应用程序数据文件和备份映像存储为持久的 Amazon S3 云存储中的对象。 Amazon S3 文件网关提供 SMB 或基于 NFS 的对 Amazon S3 中数据的本地缓存访问。
,我能够完全使用另一个选项,即在 WSL 中安装驱动器,然后将其传递给 Docker。让我们开始吧:
为什么不在 Windows 本身中托管,为什么在 WSL 中进行 rclone?
- 在 WSL cannot access drives mounted through winfsp 上运行的 Docker(rclone 使用什么)
在 Windows 中的 ClearML 中安装驱动器的步骤:
- 您可以在 WSL 中安装 rclone,并且 docker 可以访问该挂载
- 创建文件夹
/data/my-mount
(这需要在/data
中 - 我不知道为什么,我无法通过 Google 搜索找到,但我发现了{{3 }}) - 您可以将配置文件放在 Windows 中(使用
--config
选项)。 - 注意:ClearML 不支持挂载路径中的空格,即使 docker 支持。因此,您的路径必须是
/data/my-mount
而不是/data/my mount
。有一个 here。
- 创建文件夹
- 您可以通过调用 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
- 示例:
- 现在,您可以在
C:\Users\Myself\clearml.conf
中设置 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。