docker 究竟是如何工作的? (理论)

How exactly does docker work? (Theory)

我正在尝试使用 docker 并尝试牢牢掌握该产品。

虽然我喜欢它所承诺的一切,但与手动操作相比,这是一个很大的变化。

现在我了解如何构建容器、附加代码、提交并将其推送到您的存储库。

但我真正想知道的是如何在部署后更新我的代码,例如,我修复了一些小错误但没有更改依赖项,但我还在同一容器中 运行 一个数据库。

容器:

节点和 NPM

Nginx

Mysql

php

现在我知道你能做到的唯一方法是关闭容器重新拉出新容器和运行,但我认为你会丢失数据库数据。

我一直在阅读 https://docs.docker.com/engine/tutorials/dockervolumes/ 并认为容器可能会装载一个在容器之间持续存在的数据文件。

我想要做的是 运行 一个具有上述容器布局的网络 app/website 并且只需更改最新的代码 bugfixes/features.

你说得很对。 Docker 图像是你 应该 在每次更新时重建和丢弃的东西 - 尽可能避免 commit (无论如何在你的构建脚本之外)。

持久状态应通过数据容器进行管理,然后将其与图像一起装载。因此,您的 "data" 与应用程序的特定版本和实例分离。