创建新的Docker映像时,Docker WordPress映像不会保留wp-content

时间:2019-10-27 14:14:15

标签: wordpress docker

让我澄清一下情况:


  1. 使用以下命令运行wordpress docker容器:

    docker run --name wp -d -p 80:80 wordpress


  1. 使用bash登录到正在运行的容器:

    docker exec -it wp / bin / bash


  1. 创建2个虚拟文件:

    一个根:

    触摸/ xxx

    wp内容/主题中的一个

    触摸/ var / www / html / wp-content / themes / xxx


  1. 创建新的wordpress图片:

    docker commit wp new_wp


  1. 杀死原始容器:

    docker kill wp


  1. 运行新的docker映像:

    docker run --name new_wp -d -p 80:80 new_wp


  1. 检查在步骤3中创建的虚拟文件:

    根目录中的虚拟文件存在

    wp-content / themes中的虚拟文件不再存在


问题:

  1. 有人可以在第7步中解释这种商业行为吗?
  2. 我应该怎么做才能保留wp内容数据?

P.S。我正在部署到AWS ECS Fargate实例,因此使用卷对我而言不是很实际。理想情况下-我希望将所有内容都放在一张图片下,而文件不会从 wp-content 目录中消失。

非常感谢您的回答。

2 个答案:

答案 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。