我用docker-compose
安装了WordPress,现在我已经完成了网站的开发,如何即使将WordPress容器移除,也如何将这个容器变成一个永久映像,以便更新网站呢?
我经过的过程与this tutorial相同。
我现在得到了如下的WordPress容器
$ docker-compose images
Container Repository Tag Image Id Size
-------------------------------------------------------------------------
wordpress_db_1 mysql 5.7 e47e309f72c8 355 MB
wordpress_wordpress_1 wordpress 5.1.0-apache 523eaf9f0ced 402 MB
答案 0 :(得分:1)
如果该wordpress图片制作良好,则只需备份volumes。但是,如果更改了容器文件系统上的文件(而不是卷中的文件),则还需要commit容器来生成新的Docker映像。这样的图像可以用于创建新的容器。
为了确定文件是否在容器文件系统上被修改/添加,请运行docker diff
命令:
docker diff wordpress_wordpress_1
在我的测试中,经过Wordpress设置之后,甚至在更新了Wordpress,插件和主题之后,docker diff
命令的结果也为我提供了
C /run C /run/apache2 A /run/apache2/apache2.pid
这意味着仅挂起了 C 2个文件/目录,而挂起了 A 1个文件。
因此,使用docker commit
命令生成新的Docker镜像毫无困难。这样的图像只会有这三个修改。
这也意味着该Wordpress Docker映像经过了精心设计,因为所有有价值的数据都保存在Docker卷中。 (同样适用于MySQL映像)
正如我们之前所验证的,所有有价值的数据都位于docker卷中。因此,松开容器并不重要。重要的是不要松动您的音量。 how to backup a docker volume这个问题已经在Stack Overflow中得到了多次回答。
现在请注意,一些docker和docker-compose命令确实会删除卷!例如,如果您运行docker rm -v <my container>
,则-v
选项是告诉docker在删除容器的同时也删除关联的卷。或者,如果您运行docker-compose down -v
,则卷也将被删除。
嗯,最好的方法是使用众所周知的正确执行操作的Wordpress插件来备份Wordpress数据。并不是因为您在Docker容器中运行Wordpress,Wordpress的良好做法已不再适用。
在需要恢复网站的情况下,请使用docker-compose.yml文件启动新的容器/卷,完成最小的Wordpress设置,安装备份插件并使用它来恢复数据。