2017-08-20 64 views
0

我想通過Docker將正在運行的容器從主機移動到主機。 我使用的是docker checkpoint create命令,它的作用是以root身份創建檢查點,而我無法用Python觸及它們。反正有強制碼頭工人創建文件作爲另一個用戶,或scp根源文件在Python內?集裝箱實時遷移

+0

爲什麼不使用sudo運行python? –

+0

該代碼是部分網絡服務器,我認爲它不適合在生產環境中使用sudo進行運行。 –

+0

你的容器實時遷移的代碼是你的網絡服務器的一部分嗎?你應該把它們分開。 – johnharris85

回答

0

當我和一個同事在的OpenStack峯會巴塞羅那給了live migration talk and demo,我們只用sudo上tar命令解壓創建檢查點到一個文件中/tmp,然後將其用於SSH/SCP到另一臺主機。這並不是一個完美的答案,因爲你仍然需要root權限才能訪問Docker元數據目錄中創建的檢查點,但顯示至少可以將一個需要root的操作提取到單獨的特權腳本中,其餘的遷移僅需要「正常」訪問碼頭客戶端命令。

你可以在這裏看到我們的遷移腳本例子: https://github.com/stmuraka/container-migration/blob/master/Examples/migrateExample.sh

+0

嗨菲爾,我看過演示之前:)但我發現python-api更適合我的問題,因爲服務器在Django中,所以我已經在python上包裝了實驗性功能,並且因爲「移動」是用於服務器重新平衡的功能的自動操作,我不能用'sudo'來完成。但事實證明,只有有問題的文件是隻有dump.log和restore.log,它們沒有讀訪問權限,因此顯然它對於'container start'不是強制性的,我跳過了那些文件。 謝謝! –