如何从 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
我想启动以下 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