macos - 如何将文件从 docker 虚拟机复制到 OS X 上的主机?

标签 macos docker

我使用的是 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/

相关文章:

linux - 将配置文件共享到多个 docker 容器

macos - OS X Mavericks 中的 OpenCL 框架缺少 OpenCL header ?

amazon-web-services - ECR 存储库的 Dockerrun.aws.json 结构

node.js - 我无法弄清楚的奇怪 ECONNRESET 错误

macos - 无法在 Mac OSX 上设置 $GOPATH

docker - docker 中的 Rust actix_web 无法实现,为什么?

linux - Docker 运行 - 用户组没有按预期工作?

asp.net - 尝试从 vmware fusion 进行 asp.net mvc 开发

macos - 如何使用 Cocoa 或其他任何工具在 Mac OS X 10.6 上同时使用 USB 扬声器和内置音频扬声器?

c++ - dylib 与另一个 dylib 有何不同?