2016-07-26 47 views
4

我目前正在探索如何以編程方式刪除駐留在碼頭容器內的文件/文件夾。我知道我們可以使用docker cp將容器中的文件複製到主機。不過,我正在尋找像docker mv或docker rm這樣的東西,它允許我移動或移除docker中的文件/文件夾。以編程方式刪除碼頭集裝箱中的文件/文件夾

這種情況是,我們正在使用Java編寫自動測試用例,並且對於一種情況,我們需要從服務器的日誌文件夾中複製日誌文件以斷言由測試用例編寫的日誌。我們使用docker cp來複制日誌文件。但是它也包含舊測試用例的日誌。所以我在考慮在執行測試用例之前是否可以刪除日誌文件。它確保我所複製的日誌僅由我的測試用例編寫。還有別的辦法嗎?

回答

12

您可以使用以下命令從程序運行在主機上刪除文件

docker exec <container> rm -rf <YourFile> 

但是,如果存在舊的文件,因爲該容器中永遠不會被刪除,那麼一般的做法是去除容器一旦所有測試套件執行完成,

新工作應創建新容器。

+0

謝謝Sudhir,我同意你的意見。 –

1

當你是你可以做任何事情控制檯容器內可以訪問容器的bash控制檯

#console control over container 
docker exec -it a5866aee4e90 bash 

然後。 使用此命令查找和重命名我的jboss部署目錄中的文件。修改它你需要如何爲你服務。您可以刪除文件也insted的MV採用RM

find /home/jboss/jbossas/standalone/deployments -depth -name "*.failed" -exec sh -c 'mv "$1" "${1%.failed}.dodeploy"' _ {} \; 
+0

感謝您的回答。你提到的方式肯定會在主機上工作。不過,我正在尋找使用Java程序刪除文件。我可以通過Java程序運行命令「docker exec -it a5866aee4e90 bash」,但後續命令刪除文件不會在docker bash中運行。我相信它只會在主機上運行。我會試一試。 –

1

的在泊塢窗文件的定義,你可以使用

RUN rm [folder-path]

但是任何使用添加或COPY仍然會增加你的圖像的尺寸增加。

編輯:對於從主機上運行的外部程序訪問正在運行的容器,請嘗試此操作。

  1. 啓動實例時將主機文件夾掛載爲卷。
  2. 在主機上運行腳本或程序以刪除主機上所需的文件夾,這也將影響容器文件系統。
+0

謝謝Santanu,但它不會幫助,因爲我需要通過編程方式運行docker的運行實例。 –

+1

@JimitJoshi你可能想嘗試在啓動Docker實例時將主機文件夾掛載爲一個卷?然後,您可以從主機上運行的任何程序中刪除它。 –

+0

是的Santanu,我們在docker中有一個主文件夾作爲卷。但日誌文件被寫入不同的位置。我在上面的評論中更新了我的答案。感謝您抽出時間和評論。 –

相關問題