让我澄清一下情况:
使用以下命令运行wordpress docker容器:
docker run --name wp -d -p 80:80 wordpress
使用bash登录到正在运行的容器:
docker exec -it wp / bin / bash
创建2个虚拟文件:
一个根:
触摸/ xxx
wp内容/主题中的一个
触摸/ var / www / html / wp-content / themes / xxx
创建新的wordpress图片:
docker commit wp new_wp
杀死原始容器:
docker kill wp
运行新的docker映像:
docker run --name new_wp -d -p 80:80 new_wp
检查在步骤3中创建的虚拟文件:
根目录中的虚拟文件存在
wp-content / themes中的虚拟文件不再存在!
问题:
P.S。我正在部署到AWS ECS Fargate实例,因此使用卷对我而言不是很实际。理想情况下-我希望将所有内容都放在一张图片下,而文件不会从 wp-content 目录中消失。
非常感谢您的回答。
答案 0 :(得分:2)
wordpress includes a VOLUME statement的docker映像:
VOLUME /var/www/html
这将强制在所有生成的容器上创建一个卷,即使您未在docker run
命令中指定一个卷也是如此。如果没有规范,您将获得一个匿名卷,该卷具有唯一的长ID,可以在docker volume ls
中看到。
docker commit
命令(强烈建议您不要在任何需要重复性的工作流程中使用),仅捕获对容器文件系统的更改(您可以使用docker container diff
查看这些更改)。卷的更改不是容器文件系统的一部分,因此不会包含在此提交中。
要保留数据,您应该定义并使用一个卷,例如:
docker run --name wp -v wpdata:/var/www/html -d -p 80:80 wordpress
答案 1 :(得分:1)
记录台本质上是非持久性的。
如果您想将Docker用于WP,我强烈建议将映像资产管理卸载到S3和Cloudfront。