Skip to content

Docker 入门:镜像、容器与一条龙的交付物

知识背景

Docker 把应用连同依赖打进可移植单元,在任意装了 Docker 引擎的环境上一致运行,解决「我机器上能跑」问题。核心概念是 镜像(Image)——只读模板;容器(Container)——镜像的运行实例;Dockerfile——描述如何构建镜像的文本。
与虚拟机相比,容器共享宿主机内核,更轻、启动更快,适合微服务、CI/CD 与本地开发环境统一。


知识详解与通俗解释

1. 镜像与容器

  • 镜像:分层存储(Union FS),多条镜像可共享底层层,节省磁盘。
  • 容器:在镜像最上层加可写层;删容器会丢掉可写层里未持久化的数据。

通俗说:镜像是「精装房户型图」;容器是「按图纸实例化的一户人家」,装修(写入)在可写层,拆了房装修没单独备份就没了。

2. Dockerfile 常用指令(记语义)

指令作用
FROM基础镜像
WORKDIR工作目录
COPY / ADD拷贝构建上下文文件
RUN构建时执行命令(多行可合并减少层数)
ENV环境变量
EXPOSE声明端口(文档性质,真正映射靠 -p
CMD / ENTRYPOINT容器启动时默认命令

注意.dockerignore 排除 node_modules.git 等,减小上下文、加快构建。

3. 运行与网络

  • docker run -d -p 8080:80 --name web nginx:后台运行、端口映射、命名。
    -默认桥接网络下,容器间可用容器名解析(自定义网络时更稳)。
  • -v 挂载:把宿主机目录或命名卷挂进容器,数据持久化与开发热更新常用。

4. Docker Compose多容器应用用 compose.yaml 描述服务、镜像、端口、环境变量、依赖顺序,一条 docker compose up 拉起整套环境,适合本地联调与小规模部署。

5. 与生产的关系

生产除 Docker 外还涉及 镜像仓库、编排(K8s/Swarm)、健康检查、资源限制(--memory/--cpus)、非 root 用户等;本文覆盖「能读懂 Dockerfile、能本地起服务」这一层。


总结

  • 镜像 = 模板,容器 = 运行实例;数据要持久化用 volume
  • Dockerfile 管构建,run/compose 管运行与编排入门。
  • 排查问题常看:docker logsdocker exec -it <id> sh 进容器、docker inspect