🧰 Docker 的核心概念全解析:看懂这篇,Docker 就入门了!

许多初学者刚接触 Docker 时,会被各种术语搞得一头雾水:什么是镜像?容器和镜像有什么区别?Dockerfile 又是干嘛的?本文将带你理清这些核心概念,让你真正看懂 Docker 的底层逻辑和工作流程。

🧰 Docker 的核心概念全解析:看懂这篇,Docker 就入门了!


️ 镜像(Image):应用的“模具”

镜像可以理解为一个只读的模板,里面包含了运行容器所需的 操作系统环境 + 应用程序 + 配置文件 + 依赖包 等。

列如:一个 nginx 镜像里,已经包含了 nginx 程序和启动配置。

镜像特点:

  • 是静态的,不可变
  • 可以从远程仓库拉取,也可以自己构建
  • 多层结构(Layered),便于复用和缓存

常用命令:

docker pull nginx     # 从远程仓库拉取镜像
docker images         # 查看本地已有镜像
docker rmi 镜像ID     # 删除镜像

容器(Container):运行中的“实例”

容器是镜像的运行时实例,就像用模具(镜像)做出来的一个“产品”。

容器的本质:

  • 基于镜像创建
  • 具有自己的进程、文件系统、网络
  • 是“轻量级”的,启动快、资源开销小

容器可以被启动、停止、重启、销毁,但不会影响镜像本身。

常用命令:

docker run -d nginx          # 后台运行一个 nginx 容器
docker ps                    # 查看正在运行的容器
docker stop 容器ID           # 停止容器
docker rm 容器ID             # 删除容器

仓库(Registry):存放镜像的“仓库”

Docker 镜像需要有个地方统一管理和分发,这就是镜像仓库的作用。

仓库类型:

  • Docker Hub:官方默认的公共仓库(https://hub.docker.com)
  • 阿里云/华为云/中科大镜像站:国内加速服务,速度更快
  • 私有仓库(Harbor):企业级场景中常用,适合内部镜像管理

命令示例:

docker login                # 登录仓库
docker push 用户名/镜像名   # 上传镜像
docker pull 镜像名          # 下载镜像

️ Dockerfile:构建镜像的“说明书”

Dockerfile 是一个文本文件,里面写明了如何一步步构建一个镜像。例如:从哪个基础镜像开始、复制哪些文件、执行哪些命令、暴露哪些端口等。

一个简单的 Dockerfile 示例:

FROM python:3.11
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

常用指令:

  • FROM:指定基础镜像
  • COPY/ADD:复制文件
  • RUN:执行命令
  • CMD:容器启动时执行的命令

执行命令构建镜像:

docker build -t myapp:v1 .

容器的生命周期简述

理解容器生命周期,有助于你更好地掌控 Docker 行为。

容器的主要状态:

  • created:已创建但未运行
  • running:正在运行中
  • paused:被挂起(少用)
  • stopped/exited:已停止
  • dead:已崩溃或异常退出

生命周期操作示例:

docker run ubuntu                  # 创建并运行容器
docker start 容器ID                # 启动已有容器
docker stop 容器ID                 # 停止容器
docker restart 容器ID              # 重启容器
docker rm 容器ID                   # 删除容器(彻底移除)

✍️ 总结一下

概念

作用

类比

镜像

模板,静态不可变

程序安装包

容器

运行中的实例

程序运行窗口 ️

仓库

存放和分发镜像的平台

应用商店

Dockerfile

镜像构建的说明文件

安装步骤清单 ️

© 版权声明

相关文章

5 条评论

  • 头像
    非知名胖子 读者

    docker镜像介绍

    无记录
    回复
  • 头像
    菜猪菜 读者

    💗感谢分享

    无记录
    回复
  • 头像
    李晓茜 读者

    收藏了,感谢分享

    无记录
    回复
  • 头像
    岁岁年年碎碎念 读者

    请教个菜鸡问题:拉取了别人的python应用镜像,可以把应用从镜像里复制出来在其他地方运行吗?

    无记录
    回复
  • 头像
    趙不错 投稿者

    可以啊!直接docker cp 就拷贝出来了!也可以直接docker export出来

    无记录
    回复