问题描述
我要启动以下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
中看到桌面的内容。
您确实不希望您的容器能够看到整个主机文件系统。这将是危险的,特别是如果容器具有写权限。您应该始终只“装载”您希望容器访问的确切文件/目录。
在大多数情况下,我从事的任何使用docker的项目都会进行“卷挂载”,以便容器可以写入文件,并且开发人员可以轻松地在主机上访问它们(例如,硒测试截图)可以编辑源代码,容器将看到更新和热重载(例如,nodejs开发)。进行后者(热重载示例)时,通常明智的做法是将其挂载为只读模式。
有关更多详细信息,请参阅文档:https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only