我正在尝试浏览Docker Tutorial并将卷装入我的主机操作系统,如
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
我正在尝试将主机操作系统(OSX)中的目录挂载到VM:
$ docker run -P --name web -v /Users/simon/source/test:/opt/test training/webapp ls -al /opt/test
total 4
drwxr-xr-x 2 root root 40 Jun 27 17:48 .
drwxr-xr-x 5 root root 4096 Jun 27 17:51 ..
$
但是来自主机操作系统:
$ ls -al /Users/simon/source/test
total 0
drwxr-xr-x 3 simon staff 102 Jun 27 10:55 .
drwxr-xr-x@ 36 simon staff 1224 Jun 27 10:55 ..
-rw-r--r-- 1 simon staff 0 Jun 27 10:55 foo
$
也许相关 - 我的理解是docker卷应该存储在/var/lib/docker
中,这对我来说不存在:
$ ls -al /var/lib/docker
ls: /var/lib/docker: No such file or directory
答案 0 :(得分:4)
Docker服务器无法在darwin上运行。这就是你使用VM的原因。使用-v
时,实际上是将命令发送到在vm上运行的docker服务器。您发送的路径或相对于服务器的路径,而不是客户端。 VM上存在/var/lib/docker
,而不是主机。您看到的空卷是预期的行为,因为它从VM中安装/Users/simon/source/test
不存在,因此由docker创建并且为空。
为了实现您的目标,移动到VM或设置共享目录甚至更好,不要使用bind-mounts。请参阅Dockerfile的ADD
作为替代方案。