2017-03-05 118 views
0

Docker以當前形式將任何docker命令放入工作隊列,並按順序(同步)執行一個。這意味着如果您創建的單線程API(node.js)合併了Docker命令(如站起來的容器或下載映像),它將很快得到備份並且超載泊塢窗工作隊列。我已經得到了很多。問題是我如何重新建模docker以異步處理命令?如何異步運行Docker命令?

我不關心如何獲取有關命令狀態的更新,甚至無法提供完成時的回調函數。我的主要目標是能夠快速調用docker以高容量站立或執行命令,而不會影響API的響應時間。

的幾點思考 -

  1. 規模水平與更多的虛擬機

不有效地利用每個虛擬機。昂貴。不雅的解決方案。

  1. 在可用守護進程中初始化更多docker守護進程和平衡任務。

仍然不是真正異步的。此外,各種碼頭守護程序無法共享資源,如圖像。所以如果你有10個docker守護進程想要運行一個Ubuntu容器,那麼你將需要10個獨立的ubuntu鏡像,這將佔用原始ubuntu鏡像大小的10倍。

  • 異步泊塢窗客戶端 - https://github.com/tulayang/asyncdocker 我一直無法得到這個啓動和運行,甚至在NIM泊塢窗容器。另外它是用NIM編寫的。也不完全清楚,這就是我正在尋找的,或者它只是在docker中引用異步http請求。
  • +0

    什麼泊塢窗命令你發現是同步?我以前沒有遇到過這個問題。 – Matt

    +0

    @Matt它最突出的是站起來的容器。 'docker run -it -d ubuntu' 如果您在腳本中創建以下命令鏈,可以看到影響。 1.站起來的容器 2.在該容器內執行命令 3。停止並移除該容器 然後運行一個循環以高容量執行此腳本,並且它將很快得到備份,響應時間相當快速地延長。 –

    回答

    0

    你需要看看下面:

    • 註冊地:碼頭工人註冊表圖像可以被配置爲緩存代理。您的docker守護程序將被配置爲使用此緩存代理註冊表進行映像提取。只有第一張圖片纔會從dockerhub下載,並且圖像將在本地緩存,因此請求相同圖像的第二個docker守護程序將幾乎立即生成。您可以使用docker pull registry獲取圖書館(官方)圖像。

    • 碼頭工人羣:你說的是初始化多個碼頭工人守護進程和平衡的任務,那就是使用泊塢窗羣和整合的疊加網絡,它提供已經完成。

    • Kubernetes:一個替代品碼頭工人羣與更多的功能和的flexability(也複雜)

    +0

    從註冊表中下載守護進程_can_異步執行的一件事。 – Matt