我使用的是 OS X 10.13.3
,我的 docker 版本如下:
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:03:51 2017
OS/Arch: darwin/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:12:29 2017
OS/Arch: linux/amd64
Experimental: true
我知道 docker 在 OS X 上的虚拟机中运行,我可以通过以下命令进入:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
在docker的历史版本中,docker使用Docker.qcow2
作为vm的镜像。本地 /Users
目录挂载到 docker vm 中,因此我可以将文件复制到我的主目录,例如 /Users/username/Downloads
:
cp /var/lib/docker/image/overlay2/repositories.json /Users/username/Downloads
在最新版本中,Docker 使用Docker.raw
作为vm 的镜像,我无法通过这种方式复制文件。
如何将文件从虚拟机复制到我的 OS X?
最佳答案
可能的解决方法:
为容器添加本地目录作为卷(绑定(bind)挂载)。在 docker-compose.yml
中,这将是这样的:
volumes:
- wpdb:/var/lib/mysql
- ./db:/root
wpdb
是一个 docker volume,位于 linux vm 内,无法从本地 mac 目录访问
./db
将是一个绑定(bind)挂载,并且可以在与 docker-compose.yml
文件相同的目录中访问
您复制到 /root
目录中的任何文件都将在您本地的 mac 目录 ./db
中可用。
在上面的例子中:
- ./db:/root
将是一个绑定(bind)安装。
这篇文章可能解释的更清楚:
Choosing Between Volume & Bind Mount
docker run -v $PWD:/home containername
关于macos - 如何将文件从 docker 虚拟机复制到 OS X 上的主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48608899/