如何从 docker 容器中访问本地 PC 的文件系统

how to access the file system of my local PC from within the docker container

我想启动以下 docker 容器并具有终端访问权限:

docker run -it docker:5000/builds/build-lnx64-centos7:latest /bin/bash

问题是在终端内我找不到文件系统中的任何文件。没有 ~/Desktop 和类似的目录。

问题:如何从 docker 容器中访问本地 PC 的文件系统?

默认情况下,容器看不到其主机的文件系统。

如果你想实现这一点,你必须使用 -v 标志明确地“挂载”你想看到的任何目录,如下所示:

docker run -v ~/Desktop:/host-desktop -it docker:5000/builds/build-lnx64-centos7:latest /bin/bash

如果您 运行 该命令,您将在容器的文件系统中看到您的桌面内容,位于 /host-desktop

您真的不希望您的容器能够看到整个主机文件系统。那将是危险的,特别是如果容器具有写权限。您应该始终只“挂载”您希望容器访问的确切 files/directories。

在大多数情况下,我所从事的任何使用 docker 的项目都会进行“卷安装”,以便容器可以写入文件并且开发人员可以轻松地在主机上访问它们(例如 selenium 测试采用截图)或者开发人员可以编辑源代码,容器将看到更新和 hot-reload(例如 nodejs 开发)。在执行后者时(hot-reload 示例),通常以 read-only 模式挂载是明智的。

有关详细信息,请参阅文档:https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only