docker - 在 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。
解决方案
将您的 docker compose volumes 部分更改为 -
wordpress:
volumes:
- ~/Desktop/wordpress-docker:/var/www/html
无论您从本地映射到远程的哪个文件夹都是文件所在的位置。所以 wordpress-docker 不会有一个名为 /var 的文件夹。它将直接在容器的 /var/www/html 中包含 index.js 和其他文件。
推荐阅读
- vue.js - vue js 使用 v-bind:src 显示选定的 img
- python - 覆盖不会在 Mac 上运行——找不到符号:_sqlite3_enable_load_extension
- r - 从 Github 创建函数定义文件
- reactjs - 如何将使用 react-native-camera-kit 拍摄的图像存储在 laravel 服务器中?
- python - 将具有相同名称“meeting_saved_chat.txt”的文本文件移动到父文件夹
- barcode - 带压缩的 Maxicode 最大数据长度
- c# - 在我可以填充数据之前,示例代码首先调用 Application DbContext 。建议如何改变
- micronaut - 带有 Flowable 的 Micronaut 2.5.5 OutOfMemoryError
- jinja2 - Jinja 循环创建索引输出,就像使用 i+1 的 while 循环一样
- python - 使用插槽时要 dict 的数据类