【发布时间】:2016-01-21 12:35:39
【问题描述】:
编辑:我不再使用 docker,所以我无法测试这个问题的答案
感谢大家的建议!
TL;DR:你能指出一个简单的图像示例吗? 更改容器和主机之间共享的卷 文件系统?
嗨,
我无法理解卷的工作原理。
我读过Dockerfile reference 和understanding volumes
我想要做什么
- 我有一张图片,可以让作曲家在 RUN 上安装 wordpress 到 /var/tmp/html
- 然后 ONBUILD 我使用来自 docker-compose.yml 环境变量的一些信息对 /var/tmp/html 进行更多操作
- 作为最后一步,我希望将所有内容复制到 /var/www/html 并使其可从作曲家(能够运行指向这些文件的 apache)和本地文件系统(我将对此进行编码)访问html目录)
我现在拥有的
测试 1
上面的链接是那些文件在 github 上的具体版本的链接
这个测试只是安装 wordpress 的一切,没有任何卷信息
结果
猛击图片并列出 /var/www/html
我明白了:
root@4484ccdb63ca:/var/www/html# ls -al
total 32
drwxr-xr-x 6 www-data www-data 4096 Jan 21 11:45 .
drwxr-xr-x 6 root root 4096 Jan 21 11:45 ..
-rw-r--r-- 1 www-data www-data 10 Jan 21 10:47 .gitignore
-rw-r--r-- 1 www-data www-data 138 Jan 21 10:47 composer.json
-rw-r--r-- 1 www-data www-data 3718 Jan 21 10:47 composer.lock
-rw-r--r-- 1 www-data www-data 428 Jan 21 10:47 index.php
drwxr-xr-x 6 www-data www-data 4096 Jan 21 11:45 vendor
drwxr-xr-x 8 www-data www-data 4096 Jan 21 11:45 wordpress
这是好的
并在我得到的本地文件系统上列出 ./html
total 0
drwxr-xr-x 3 miqueladell staff 102 Jan 21 10:33 .
drwxr-xr-x 11 miqueladell staff 374 Jan 21 13:04 ..
-rw-r--r-- 1 miqueladell staff 0 Jan 21 10:33 foo
这是错误,但完全在意料之中。文件在容器上没问题,但在容器外无事可做,因为我没有提供任何卷信息。
测试 2
上面的链接是那些文件在 github 上的具体版本的链接
在 Dockerfile 和 docker-compose.yml 上添加 VOLUME
这是差异的粘贴
Dockerfile
- # VOLUME /var/www/html/
+ VOLUME /var/www/html/
docker-compose.yml
- # volumes:
- # - .html:/var/www/html/
+ volumes:
+ - ./html:/var/www/html/
构建镜像和运行cointainer的结果都是空容器上的一个空html目录,并且本地文件系统没有变化
谢谢!
编辑:我创建了这个问题的最小失败版本:How to get contents generated by a docker container on the local fileystem (minimal failing example)
【问题讨论】:
-
this other question 有帮助吗?
-
我认为不是。它确实提供了“将文件放在那里”的解决方案,但我正在为 Web 开发建立一个基础,所以我真的需要在本地和容器文件系统之间共享文件。谢谢!
标签: docker dockerfile docker-compose