我从Docker Hub (比方说) Ghost CMS中提取了一个映像,在阅读文档之后,我看到默认的挂载点是/var/lib/ghost/content
现在,当我使用Ghost作为基础镜像来创建自己的应用程序时,我会映射一些文件夹(比如) CMS-Content,并将其挂载到/var/lib/ghost/content上,如下所示-
volumes:
- CMS-Content: /var/lib/ghost/content路径/var/lib/ghost/content是系统级路径。然而,CMS-Content是我创建的一个文件夹,用于存放我的文件(持久数据)。
最后,我决定将我的应用程序作为映像发布到Docker Hub中,那么现在的挂载点是什么?
发布于 2020-08-01 06:33:40
如果您想为容器创建一个持久的数据:
使用command-line:
docker run -it --name <WHATEVER> -p <LOCAL_PORT>:<CONTAINER_PORT> -v <LOCAL_PATH>:<CONTAINER_PATH> -d <IMAGE>:<TAG>使用docker-compose.yaml:
version: '2'
services:
cms:
image: <IMAGE>:<TAG>
ports:
- <LOCAL_PORT>:<CONTAINER_PORT>
volumes:
- <LOCAL_PATH>:<CONTAINER_PATH>假设:
镜像:
示例:
$ mkdir -p /persistent-volumeversion: '2'
services:
cms:
image: ghost-cms:latest
ports:
- 8080:8080
volumes:
- /persistent-volume:/var/lib/ghost/content发布于 2020-08-01 08:53:20
每个容器都有自己的独立文件系统。写镜像的Dockerfile的人可以决定它使用什么文件系统路径,但由于它与其他容器和主机隔离,所以使用“系统”路径是非常正常的。作为另一个例子,标准的Docker Hub数据库镜像使用/var/lib/mysql和/var/lib/postgresql/data。对于自定义应用程序,如果对您有意义,您可以选择使用/app/data,甚至只使用/data。
如果您正在创建一个映像FROM一个预先存在的映像,您通常会继承它的文件系统布局,因此您的自定义映像的挂载点将与基础映像中的相同。
浏览一下Ghost Tutorials,您可能想要做的大多数事情要么是使用管理UI,要么是在content目录中进行手动更改。在您的示例中,唯一更改的文件位于名为CMS-Content的卷中(即使您没有命名卷,也是在Docker Hub ghost image specifies an anonymous volume there中)。这意味着您不能创建具有标准主题或其他类似设置的派生图像:您不能更改派生图像中的content目录,并且如果您尝试使用docker commit (不推荐),则它生成的图像将不包含卷中的内容。
https://stackoverflow.com/questions/63197949
复制相似问题