我有一个在 Docker 中运行的 Wordpress 安装 instance .我在使用电子邮件时遇到问题,这可能是由于缺少 sendmail
。如果我确实必须将 sendmail
添加到容器中,预期 方法是什么?我看过 lxc hacks但它总是声明或至少暗示这不在 Docker 应该如何工作的意图之内。我决定为我的 Wordpress 站点使用 Docker,因为我已经有一个安装了 HTTP 服务的运行系统,而且基本上将所有东西(Apache、PHP、MySQL 等)分开的想法真的很吸引我。然后我可以只备份整个容器并在需要时将其整体移动到另一个系统。
为了尽可能直接地陈述我的问题,修改正在运行的容器的哪种方法最适合 Docker 的预期设计?我是否应该如上所述通过 lxc-attach 尝试临时 bash 提示?或者是否有更合适的方法,例如将容器制作成新图像(以保留我所有的 WP 数据)并修改图像,然后重新启动容器?
最佳答案
长答案:
我建议更改项目的结构方式。
在您的容器中拥有一个数据库对于本地开发是没问题的 - 当您不关心每次重新启动容器时您所做的更改是否丢失。
此时,如果您的容器因任何原因挂掉,或者如果您因任何原因需要重新启动它,您的数据将会丢失。
在需要时使用 nsenter
(如下所述)附加到正在运行的容器:
- 在主机上安装
mysql
- 附加到您正在运行的容器并对您的数据库执行
mysqldump
scp
从容器到主机的 .sql 文件- 将你的数据库导入主机上的mysql
- 将您的 Wordpress 站点指向主机数据库
我查看我的 Docker 项目是否设置正确的方式是这样的:
如果您无法以自动方式返回容器当前所在的位置,则说明您做错了什么。
简答:
使用nsenter附加到您的容器并进行所需的更改。
并祈祷你的容器没有任何问题,这样你就不会丢失你的数据。
关于linux - 更改 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005305/