复制或scp文件到/ var / lib / boot2docker for booter-machine

时间:2016-05-31 18:12:20

标签: docker boot2docker docker-machine

要在OS X上使用Docker,我使用由docker-machine管理的VirtualBox中运行的boot2docker VM。 boot2docker documents mention a persistence volume /var/lib/boot2dockerdocker-machine's scp command。我想将主机文件系统上的文件bootlocal.sh复制到boot2docker VM。

我认为File::Find::Rule对此有用,

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,最好是从主机复制?

1 个答案:

答案 0 :(得分:0)

我找不到使用docker-machine scp执行此操作的方法。我确实发现,至少对于OS X,主机的/Users目录作为卷安装在docker-machine VM中,这意味着如果文件位于该目录下的主机文件系统中, VM可以逐字访问它。

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

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