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" 与应用程序的特定版本和实例分离。
我正在尝试使用 docker 并尝试牢牢掌握该产品。
虽然我喜欢它所承诺的一切,但与手动操作相比,这是一个很大的变化。
现在我了解如何构建容器、附加代码、提交并将其推送到您的存储库。
但我真正想知道的是如何在部署后更新我的代码,例如,我修复了一些小错误但没有更改依赖项,但我还在同一容器中 运行 一个数据库。
容器:
节点和 NPM
Nginx
Mysql
php
现在我知道你能做到的唯一方法是关闭容器重新拉出新容器和运行,但我认为你会丢失数据库数据。
我一直在阅读 https://docs.docker.com/engine/tutorials/dockervolumes/ 并认为容器可能会装载一个在容器之间持续存在的数据文件。
我想要做的是 运行 一个具有上述容器布局的网络 app/website 并且只需更改最新的代码 bugfixes/features.
你说得很对。 Docker 图像是你 应该 在每次更新时重建和丢弃的东西 - 尽可能避免 commit
(无论如何在你的构建脚本之外)。
持久状态应通过数据容器进行管理,然后将其与图像一起装载。因此,您的 "data" 与应用程序的特定版本和实例分离。