【问题标题】:How to convert container into image?如何将容器转换为图像?
【发布时间】:2019-03-02 08:57:34
【问题描述】:

我用docker-compose安装了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

【问题讨论】:

    标签: wordpress docker-compose


    【解决方案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
    

    这意味着只有 2 个文件/目录被C挂起,1 个文件A被删除。

    因此,使用docker commit 命令生成新的 docker 镜像是没有意义的。这样的图像只会有这 3 种修改。

    这也意味着这个 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,卷也会被删除。


    如何备份在 docker-compose 项目中运行的 Wordpress?

    嗯,最好的方法是使用以正确执行此操作而闻名的 Wordpress 插件来备份您的 Wordpress 数据。不是因为您在 docker 容器中运行 Wordpress,Wordpress 的良好做法不再适用。

    如果您需要恢复您的网站,请使用您的 docker-compose.yml 文件启动新的容器/卷,完成最小的 Wordpress 设置,安装您的备份插件并使用它来恢复您的数据。

    【讨论】:

    • 谢谢,你的解释很全面。
    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多