Containers
用於 HPC 批處理的容器
我們面臨的問題是很多人想在我們的高性能計算集群上執行不同的科學軟體。每個使用者都需要一組不同的庫和庫版本,我們不希望管理員每次都處理新庫的安裝。
因此,我們正在考慮為此目的使用 docker 容器:每個使用者都可以使用他需要的使用者空間庫設置自己的容器,然後使用該容器執行批處理作業。
但是,正如我所看到的,docker 主要專注於服務而不是批處理作業:通常你有一個(例如 web)服務,它應該一直執行並處理新作業(這基本上總是與 new 相同的任務輸入數據)一旦他們進來。
我們的情況完全不同:一個新使用者應該能夠設置應該在硬體上執行的新任務,並且應該為他的批處理作業獲得一定數量的資源。
因此,我想知道是否已經有針對這種情況的解決方案。我看了一下https://github.com/NERSC/shifter似乎朝著正確的方向發展,但發展停滯不前。
我們將 docker 容器廣泛用於臨時批處理類型的作業。在我們的例子中,它是密集的 3D 成像處理,但每個容器都處理數千個相關圖像的“批次”。我們發現這個案例執行良好,沒有理由不使用 docker。
在設計解決方案時,需要考慮以下幾點:
- 所有送出程式碼的人都受信任嗎?如果沒有,您需要對安全性進行長期考慮。
- 確保使用
-rm
標誌執行容器,以便容器在完成後自動刪除。- 執行本地 docker 系統資料庫,以便 1)您不依賴外部系統資料庫,以及 2)您可以將批處理伺服器配置為根據需要自動拉取圖像。
- 跟踪一段時間未使用的圖像並將其從伺服器中清除。