当前位置:首页>python>Python学习【173】:Docker 核心概念一文搞定:镜像、容器、Dockerfile,别再混淆了!

Python学习【173】:Docker 核心概念一文搞定:镜像、容器、Dockerfile,别再混淆了!

  • 2026-10-11 06:45:19
Python学习【173】:Docker 核心概念一文搞定:镜像、容器、Dockerfile,别再混淆了!
01
学前花絮
很多初学者刚开始接触 Docker 时,会被“镜像”、“容器”、“仓库”、“Dockerfile”这些词搞得晕头转向。尤其容易混淆镜像(Image)和容器(Container)——它们到底有什么区别?为什么说容器是“运行中的镜像”?Dockerfile 又扮演什么角色?
本文将从零开始,用最直白的语言和命令操作,帮你把这些概念理清楚。读完这篇文章,你将能:
  • 准确区分镜像和容器
  • 熟练使用常用 Docker 命令查看和管理资源
  • 理解 Dockerfile 的作用并写出第一个自定义镜像
02
Docker 核心概念:镜像、容器、Dockerfile
2.1 Docker 是什么?为什么需要它?
Docker 是一个开源的容器化平台,它允许你将应用程序及其所有依赖(代码、运行时、库、配置)打包成一个独立的、可移植的单元,这个单元就是容器。
传统开发中,经常出现“在我电脑上能跑,到你那就挂了”的问题。Docker 通过隔离环境,确保了从开发到生产的环境一致性。同时,它比虚拟机更轻量,启动更快,资源占用更少。
2.2 核心概念一:镜像(Image)—— 只读的“模板”
镜像是一个只读的、静态的文件集合,里面包含了运行某个软件所需的全部内容:精简的操作系统文件、应用程序、依赖库、环境变量等。你可以把镜像想象成一个“安装光盘”或一个“装修设计图”。
常见的镜像有:nginx:alpine(Web 服务器)、mysql:8.0(数据库)、python:3.9-slim(Python 运行环境)。
查看本机已有的镜像:

每一行代表一个已下载到本地的镜像。镜像不运行,它只是静静地躺在硬盘上(通常位于 /var/lib/docker)。
核心概念二:容器(Container)—— 运行中的“实例”
容器是镜像的动态运行实例。当你执行 docker run 时,Docker 会基于镜像创建一个可读写的容器层,并启动其中的进程。你可以把容器理解为“安装并启动后的操作系统”。
同一个镜像可以创建多个容器(比如用 nginx:alpine 启动 3 个不同的 Web 服务)。
容器可以被启动、停止、删除。删除容器后,对容器内部做的修改(如新建的文件)会丢失,但镜像本身不变。
查看正在运行的容器:

  • STATUS 为 Up 表示正在运行,Exited 表示已停止。
  • NAMES 是容器名称(可自定义)。
统计容器数量:

2.4 镜像 vs 容器:一张表看懂区别

一句话总结:镜像是类,容器是实例;镜像是照片底片,容器是洗出来的照片。
2.5 核心概念三:Dockerfile —— 定义镜像的“配方”
Dockerfile 是一个文本文件,里面包含了一系列构建指令,告诉 Docker 如何从一个基础镜像开始,复制代码、安装依赖、设置环境,最终组装出一个自定义的新镜像。
为什么需要 Dockerfile?
之前你可能用过这样的命令:

这种方式依赖宿主机上的代码目录,而且每次启动都要重新安装依赖。Dockerfile 可以把代码和依赖一起打包进镜像,实现“一次构建,到处运行”。
一个最简单的 Dockerfile 示例
假设你的 Flask 应用目录结构:

app.py:

requirements.txt:

Dockerfile(放在同一目录):

构建并运行自定义镜像
在 Dockerfile 所在目录执行:

访问 http://虚拟机IP:5000 即可看到 hello, docker。这个镜像可以导出、上传到仓库,在任何装有 Docker 的机器上直接运行。
2.6 实战小练习:从零开始打包你的 Python 应用
  1. 准备代码:创建上面示例中的 app.py 和 requirements.txt。
  2. 编写 Dockerfile:如上所示。
  3. 构建镜像:docker build -t my-first-app .
  4. 运行容器:docker run -d -p 8080:5000 --name test-app my-first-app
  5. 访问测试:浏览器打开 http://localhost:8080(或虚拟机 IP)。
  6. 查看容器:docker ps 确认运行中。
  7. 停止并删除:docker stop test-app && docker rm test-app
通过这个小练习,你应该能直观感受到:Docker 让应用交付变成了“一个镜像 + 一条 run 命令”的极致简化。
03
小结
  • 镜像是静态模板,容器是动态运行实例。
  • 一个镜像可以衍生出多个容器,容器之间相互隔离。
  • Dockerfile 是用来构建自定义镜像的脚本,它把环境配置和代码固化到镜像中,实现环境一致性。
  • 常用命令:docker images、docker ps、docker run、docker build。
理解了这些核心概念,你就掌握了 Docker 的“地基”。接下来可以学习 Docker Compose(编排多个容器)和 容器网络,进一步解锁微服务部署的威力。
让我们保持学习的热情,2026年一马当先、马到成功!

最新文章

随机文章