2017-08-16 51 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/