2017-04-24 54 views
2

如果創建一個文件夾(如果它在複製之前不存在),是否可以創建它?Docker:刪除並創建文件夾,然後再做cp

docker cp /opt/project/build/core/bundle target_container:/opt/project/build/core 

通常只有/opt/project/build/現有。

我想要做的是複製文件夾bundle並替換現有文件夾及其文件(如果它存在)。如果不存在,則應創建文件夾core/bundle並複製文件。

回答

1

docker exec將允許您在容器中運行命令。

docker exec $target_container mkdir -p /opt/project/build/core 
docker cp /opt/project/build/core/bundle $target_container:/opt/project/build/core/ 

cp告訴泊塢窗的源複製到core/目錄,而不是命名bundle/ - >core

更換

如果想徹底「替換「現有的bundle目錄,而不是使用cp向其添加文件, d需要從刪除開始。

docker exec $target_container sh -c \ 
    'rm -f /opt/project/build/core && mkdir -p /opt/project/build/core' 
+0

如何刪除build文件夾中,並創建新的空包文件夾? 'docker exec $ target_container rm -f/opt/project/build && docker exec $ target_container mkdir -p/opt/project/build/core'我可以將它合併到一個命令嗎? – user3142695

+0

這需要通過像'sh'這樣的腳本或shell來運行。我已更新示例 – Matt

2

一個oneliner儘管不那麼直觀的選擇:

tar xf - <dir> | docker exec -i <container> tar xf - 
+0

不錯。 'tar xf - build/core | docker exec -i tar -C/opt/project -xf -'將允許不同的源路徑和目標路徑。 – Matt

+0

雖然我不確定你可以在裏面安裝'rm'。 – Matt

+0

我想你可以使用'--recursive-unlink' – jolooket

相關問題