对于由docker-machinepipe理的boot2docker虚拟机,复制或scp文件到/ var / lib / boot2docker

为了在OS X上使用Docker,我使用了由docker-machinepipe理的VirtualBox中运行的boot2docker虚拟机。 boot2docker文档提到了一个持久化卷/var/lib/boot2docker 。 我想将主机文件系统上的文件bootlocal.sh复制到boot2docker虚拟机上。

我以为docker-machine的scp命令会为此工作,

 docker-machine scp bootlocal.sh dockerhost:/var/lib/boot2docker/ 

不幸的是,这给了

 scp: /var/lib/boot2docker/bootlocal.sh: Permission denied exit status 1 

检查文件权限,我们可以看到, root是唯一具有写入权限的目录,默认情况下:

 docker@dockerhost:~$ ll -d /var/lib/boot2docker lrwxrwxrwx 1 root root 29 May 31 17:40 /var/lib/boot2docker -> /mnt/sda1/var/lib/boot2docker/ docker@dockerhost:~$ ll -d /mnt/sda1/var/lib/boot2docker drwxr-xr-x 6 root root 4096 May 31 17:40 /mnt/sda1/var/lib/boot2docker/ 

无法将用户root指定为与docker-machine scp一起使用的用户。

如何将文件复制到/var/lib/boot2docker ,最好从主机?

我找不到使用docker-machine scp 。 我发现,至less在OS X上,主机的/Users目录作为一个卷装入docker-machine虚拟机,这意味着如果该文件位于该目录下的主机文件系统内,则VM可以访问它是逐字的。

知道这一点,我的解决方法是使用docker-machine ssh为我需要传输的文件发出一个cp命令。

 docker-machine ssh dockerhost sudo cp /Users/username/path/to/bootlocal.sh /var/lib/boot2docker/