2017-08-16 48 views
2

我試圖運行以下到泊塢窗容器:如何從主計算機rsync的使用搬運工CP

  1. 在後臺啓動一個容器

docker run -dit -p 8090:80 --name container repository:dockerfile bash

  • 我想從/test
  • 排除子目錄

    docker cp /Users/$USER/test container:/test

  • 我想使用rsync這個 docker exec rsync -avP --exclude /Users/$USER/test/data /Users/$USER/test/ container:/test/
  • 我得到以下錯誤:

    rsync: Failed to exec ssh: No such file or directory (2) 
    rsync error: error in IPC code (code 14) at pipe.c(85) [sender=3.1.0] 
    rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
    rsync error: error in rsync protocol data stream (code 12) at io.c(226) 
    [sender=3.1.0] 
    

    我怎樣rsync的從主機到容器?

    回答

    1

    當您運行docker exec rsync [...]時,在容器中執行rsync命令。路徑/Users/$USER/test/對應於您主機系統上的目錄,因此rsync很難在您的容器中找到它。

    有兩種使用rsync將文件傳送到一個容器中基本上有兩種方式:

    1. 您可以將主機系統上安裝ssh服務器,並使用rsync從容器內連接到主機系統從外面。如果您有主機上運行的ssh服務器和主機名host下可達你可以做

      docker exec rsync -avP --exclude /Users/$USER/test/data host:/Users/$USER/test /test 
      
    2. 您可以安裝在容器內的SSH服務器,並使用您的主機系統上的rsync連接到來自外部的容器。我想你的容器名稱container下到達,那麼你可以做

      rsync avP --exclude /Users/$USER/test/data /Users/$USER/test container:/test 
      

      在這種情況下,你必須確保SSH端口(默認爲22)是由泊塢窗守護公佈。

    1

    首先映射主機目錄,放入容器:

    docker run -v /Users/$USER/test:/temp-test -dit -p 8090:80 --name container repository:dockerfile bash 
    

    然後用rsync的,如下所示:

    docker exec container rsync -avP --exclude /temp-test/data /temp-test/ /test/