如何将文件从Docker虚拟机复制到Mac OS X主机?

3

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

我知道在OS X上Docker是运行在虚拟机中的,我可以通过以下命令进入:

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

在 Docker 的早期版本中,Docker 使用 Docker.qcow2 作为虚拟机镜像。本地的 /Users 目录被挂载到 Docker 虚拟机中,因此我可以将文件复制到我的主目录下,例如 /Users/username/Downloads:
cp /var/lib/docker/image/overlay2/repositories.json /Users/username/Downloads

在最新版本中,Docker使用Docker.raw作为虚拟机的镜像,因此我无法通过那种方式复制文件。
我该如何将文件从虚拟机复制到我的OS X系统?

我不清楚你的问题是什么,你想将文件从Docker容器复制到Docker主机吗? - Alessandro Cosentino
1
@lutaoact 如果你查看这道问题的答案,它应该会给你所有需要的信息: https://dev59.com/FmAh5IYBdhLWcg3wBfeM。如果你需要更具体的信息,请询问。 - Geoff
2个回答

0
一个可能的解决方法:
为容器添加本地目录作为卷(绑定挂载)。在 docker-compose.yml 中,可以这样做:
volumes:
       - wpdb:/var/lib/mysql 
       - ./db:/root 

wpdb 是 Docker 数据卷,它位于 Linux 虚拟机内部,并且无法从本地 Mac 目录访问。

./db 是绑定挂载,可在与您的 docker-compose.yml 文件相同的目录中访问。

您复制到 /root 目录中的任何文件都可以在本地 Mac 目录 ./db 中使用。

在上面的例子中:

- ./db:/root 

这将是一个绑定挂载。

这篇文章可能会更清楚地解释:

在卷和绑定挂载之间进行选择

docker run -v $PWD:/home containername


0

可以使用docker cp命令来完成

docker cp <CONTAINER_ID>:<SRC_PATH_ON_CONTAINER> <DEST_PATH_ON_LOCAL_MACHINE>

更多细节:Docker文档

2
更清晰的解释如何使用该命令(可以附带示例)将有助于增加此答案的价值。目前,它更可能被视为一条评论。 - geisterfurz007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接