簡體   English   中英

在 clearml 代理中安裝 docker 中的 S3 存儲桶

[英]Mounting an S3 bucket in docker in a clearml agent

在將用作 ClearML 代理的 docker 映像中安裝 S3 容器的最佳實踐是什么? 我可以想到 3 個解決方案,但目前無法使任何解決方案工作:

  1. 在 ClearML 中使用預制配置,特別是 CLEARML_AGENT_K8S_HOST_MOUNT。 為此,S3 存儲桶將使用rclone單獨安裝在主機上,然后重新映射到 docker。 這似乎只適用於 Kubernetes 而不是 Docker - 因此不起作用。
  2. 使用此處指定的 s3fuse 進行安裝。 問題是它可以與存儲在 ClearML 瀏覽器會話中的 S3 存儲桶密碼一起使用嗎? 這似乎也很復雜,需要自定義 docker 映像,更不用說將 docker 映像運行為 --privileged 或類似。
  3. 使用1.0 發行說明中指定的“docker_args 和 docker_bash_setup_script arguments 到 Task.create()”將 arguments 傳遞給 docker。 這將類似於 (1),但 arguments 將用於綁定安裝卷 我沒有看到太多關於如何將此新功能用於此目的的文檔或示例。

我建議您查看網關后面的存儲網關 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 是 object 存儲,所以如果您期待進行文件操作,例如寫入文件或 zip 文件,根據我的個人經驗,可能需要時間進行操作。

請記住,s3 不是文件系統,而是 object 存儲 - 雖然掛載是一個非常有用的功能 - 我不會利用文件讀取或創建以外的任何東西 - 不要嘗試 append 文件,不要嘗試使用文件系統詭計

如果是這種情況,我建議對容器使用NFSSSD

而如果我們尋找s3fs-fuse它具有分段上傳和 MD5 和本地緩存等優勢。

您可以編寫自己的腳本的最簡單方法,該腳本將與 HTTP 上的 S3 存儲桶目錄同步到本地目錄,否則存儲網關 S3是不錯的選擇。

Amazon S3 文件網關提供了一種無縫連接到雲的方式,以便將應用程序數據文件和備份映像作為持久對象存儲在 Amazon S3 雲存儲中。 Amazon S3 文件網關通過本地緩存提供對 Amazon S3 中數據的基於 SMB 或 NFS 的訪問。

我能夠獲得另一個完全可以工作的選項,即在 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
  • 現在,您可以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM