Docker
一句话
Docker 把程序和它的依赖、配置打包成镜像,再以相互隔离的容器运行,换台机器也能照样跑。
大白话
Docker 像标准集装箱:货物连同包装一起装进统一尺寸的箱子,不管上哪条船、到哪个码头,吊装和堆放的方式都一样,不用每次重新打包。
比喻的边界
集装箱里的货跟着箱子走,容器里写入的数据却会随容器删除而消失,要长期保存得另外挂载存储;密钥也不该直接封进箱子里。
拿去就能用
我想用 Docker 运行,方便部署到服务器。帮我写一个 Dockerfile,逐行解释它在做什么,说明镜像怎么构建、容器怎么启动、端口怎么映射。密钥用环境变量传入,不要写进镜像。
还差:我的项目,发给 AI 前记得换掉
我把数据库容器删掉重新 docker run 了一次(或者 compose down 之后再 up),之前存的数据全没了。我怀疑没有挂载数据卷,数据只存在旧容器里。先帮我查当前容器的挂载情况确认,再给持久化方案。删除或重建容器的步骤先告诉我影响,等我确认。
我的项目有前端、后端和数据库,每次要分别启动三个容器。帮我用 docker-compose 写到一个文件里,说明服务之间怎么互相访问、数据存在哪里。先给配置让我看懂,再运行。
别这样说 → 这样说
别这样说
Docker 启动了但访问不了,你帮我看看。
这样说
我用 docker run 启动了后端容器,docker ps 显示它在运行,但浏览器打开 localhost:8000 连不上。启动命令和容器日志贴在下面。帮我先检查端口映射和程序监听的地址,确认原因再改。
差别:给出了命令、运行状态和日志,并指明了先查的方向。
误解容器就是一台小虚拟机,里面有完整的操作系统。
其实是容器是隔离运行的进程,和宿主机共用同一个内核,所以启动快、占用少,和虚拟机不是一回事。
展开专业理解
镜像是包含程序、依赖和配置的标准包,一般由 Dockerfile 一步步构建,建好后不能修改,只能构建新镜像;容器是镜像运行起来的实例,多个容器共享宿主机内核。容器里的 localhost 指容器自己,外部访问要做端口映射;要保留的数据放数据卷,配置和密钥在运行时注入。
来源
- Docker Docs:What is a container? 核对于 2026-09-26
- Docker Docs:What is an image? 核对于 2026-09-26