在clearml代理中的docker中安装S3 bucket



在将用作ClearML代理的docker映像中安装S3容器的最佳做法是什么?我能想到3种解决方案,但目前无法找到任何解决方案:

  1. 在ClearML中使用预制配置,特别是ClearML_AGENT_K8S_HOST_MOUNT。为了实现这一点,S3存储桶将使用rclone单独安装在主机上,然后重新映射到docker中。这似乎只适用于Kubernetes,而不适用于Docker,因此不起作用
  2. 按照此处的规定使用s3fuse进行安装。问题是,它能与存储在ClearML浏览器会话中的S3存储桶秘密一起工作吗?这看起来也很复杂,需要自定义docker映像,更不用说以特权或类似身份运行docker映像了
  3. 使用";Task.create((的docker_args和docker_bash_setup_script参数"如1.0发行说明中所述。这将类似于(1(,但参数将用于绑定装载卷。我没有看到太多关于如何将这一新功能用于此目的的文档或示例

我建议您检查可以使用NFS、EFS或S3存储桶的网关后面的存储网关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不是一个文件系统,而是一个对象存储-while挂载是一种非常有用的能力——我不会利用除了文件读取或创建之外的任何内容-不要试图附加文件,不要试图使用文件系统欺骗

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

而如果我们寻找s3fs-fuse,它有多部分上传和MD5&本地缓存等

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

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

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

为什么不在Windows中主机,为什么在WSL中rclone?

  • WSL上运行的Docker无法访问通过winfsp安装的驱动器(rclone使用的(

在Windows中的ClearML中安装驱动器的步骤:

  • 您可以在WSL中安装rclone,docker可以访问该挂载
    • 创建文件夹/data/my-mount(这需要在/data中-我不知道为什么,谷歌搜索也找不到,但我在这里找到了(
    • 您可以将配置文件放在窗口中(使用--config选项(
    • 注意:ClearML将不支持挂载路径中的空格,即使docker会支持。因此,您的路径必须是/data/my-mount,而不是/data/my mount。我打开了一个关于这个的bug
  • 您可以通过调用docker并挂载文件来测试挂载。
    • 示例:docker run -it -v \wsl$Ubuntudata:/data my-docker-image:latest ls /data/my-mount
    • 注意:您必须装载/data而不是/data/my装载,否则可能会出现以下错误:docker: Error response from daemon: error while creating mount source path
  • 现在,您可以在C:UsersMyselfclearml.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$Ubuntudata:/data", ]
}
  • 注意,您也可以在WSL之外运行clearml代理,然后只需要指定["-v","/data:/data", ]
  • 在cmd:clearml-agent daemon --docker中运行clearml代理

最新更新