首页 > 解决方案 > 在 Docker 中使用卷访问容器文件系统

问题描述

我是使用 Docker 的新手,正在尝试让卷正常工作,但有些地方不太对劲。

我已经按照 Docker 教程中的说明在 Docker 上安装了 Wordpress:https ://docs.docker.com/compose/wordpress/

使用 Docker Desktop,我成功地启动并运行了映像,并按照 Wordpress 的安装向导进行操作。到现在为止还挺好。

现在,我希望能够访问本地计算机上的 Wordpress 文件,以便在 vscode 中编辑它们。

我发现了几篇文章,例如Access running docker container filesystem,它们都暗示了同一件事:如果您设置volumes:属性docker-compose.yml以将本地项目目录映射到容器中的 webroot,它应该“正常工作”。但事实并非如此。

我 Mac 上的本地目录位于我的桌面上,名为wordpress-docker. 在这个目录里面住着我的docker-compose.yml.

我已经编辑docker-compose.yml所以它有这个:

wordpress:
  volumes:
    - ~/:/var/www/html

我知道/var/www/html是正确的,因为如果我通过 Docker Desktop SSH 进入容器然后运行pwd它会给我那个目录。我还可以看到这正是运行后 Wordpress 文件的位置ls -l

在此处输入图像描述

我要做的就是让上面列出的文件可以在wordpress-docker我的桌面上的目录中访问。鉴于它docker-compose.yml在同一个目录中,我已经尝试过两者~/,并且./作为前面的部分/var/www/html

重新启动容器时没有显示错误消息。wordpress-docker但我桌面上唯一的文件是docker-compose.yml. 它没有显示上面屏幕截图中的任何文件,这是我想要和期望的。

为什么不显示容器中的文件?我发现的所有教程似乎都表明它很简单——你将一个本地目录映射到容器中的那个,然后它就可以工作了。就我而言,它没有。

Docker 引擎 20.10.0,macOS Catalina 上的 Docker Desktop 3.0.0。

标签: dockerdocker-compose

解决方案


将您的 docker compose volumes 部分更改为 -

wordpress:
  volumes:
    - ~/Desktop/wordpress-docker:/var/www/html

无论您从本地映射到远程的哪个文件夹都是文件所在的位置。所以 wordpress-docker 不会有一个名为 /var 的文件夹。它将直接在容器的 /var/www/html 中包含 index.js 和其他文件。


推荐阅读