容器
Container
中级通用容器(Container)是由镜像创建的运行环境,让应用连同依赖以相对隔离的方式运行。它解决了开发机和服务器环境不一致的问题,例如把网站后端打包后,在测试和生产环境运行同一份镜像。
你可能会说:「我想把后端和依赖一起交给服务器运行,别再出现本地能跑、上线就缺东西的情况。」
动手看看网站后端从测试部署到生产
1
先把网站后端和所需依赖一起构建成镜像。镜像是可复用的运行模板,还不是正在运行的应用。
要点容器是怎么帮应用跑起来的?
- 1
镜像提供运行所需的内容
你可以把镜像理解为一份可复用的运行材料,里面有应用代码和它需要的依赖。启动镜像才会产生容器;改了代码后,通常要重新构建镜像,正在运行的容器不会自动变成新版本。
- 2
隔离环境但共享主机内核
容器里的进程有自己的文件系统视图等隔离边界,但它仍依赖宿主机的操作系统内核。所以容器不是一台完整的电脑,也不是绝对的安全边界;排错时还得看宿主机资源和容器配置。
- 3
数据和配置要单独安排
容器可能被停止、删除和重新创建,所以用户上传的文件或数据库数据不能只放在容器内部的可写层。我们通常把持久数据放到外部存储,并通过环境变量等方式传入随环境变化的配置。
容易混淆的地方
镜像是用来创建容器的内容,容器才是实际运行的实例:同一份镜像可以启动多个容器。虚拟机则运行自己的操作系统内核,隔离方式和资源开销与容器不同。如果你说“把容器上传后部署”,最好先确认交付的是镜像,还是要在目标机器上启动容器。
什么时候用
适合用
- 你做了一个带特定运行时和依赖的网站后端,想让测试环境与生产环境用同一份镜像启动。
- 你的应用有后台任务和 API 服务,想分别启动、更新和查看它们的运行日志。
不适合用
- 你只要发布一组静态网页文件,没有服务端进程需要运行,用静态网站托管更直接。
- 你只是想隔离一次本地代码改动,而不需要隔离运行环境,用 Git 分支就够了。
练一练选一个答案,看看解释
你把图片处理服务装进容器,上线后一切正常,但每次更新容器,用户上传的原图就消失。接下来怎么改最合适?
让 AI 帮你做复制给 AI Agent 直接用
请把这个图片处理后端做成可部署的容器:构建镜像,列出启动所需的环境变量和端口,并把上传文件放在容器外的持久存储。给我本地验证步骤,说明重新创建容器后如何检查文件仍在。