查看: 119|回复: 0

Docker 容器零基础完整教程:镜像、容器、核心命令、生命周期与持久化实战

[复制链接]

1418

主题

4

回帖

4319

积分

超级版主

积分
4319
发表于 2026-8-4 09:57:55 | 显示全部楼层 |阅读模式
本帖最后由 接好运鸭 于 2026-8-4 10:00 编辑
前言
       不管是 AI 开发、后端服务还是本地测试,Docker 都是必备工具。很多初学者分不清镜像和容器,只会零散敲命令,不懂底层逻辑,线上部署频繁踩坑。本文从基础概念入手,讲清容器本质、四大核心特性,覆盖 90% 日常使用命令,附带生产最佳实践,零基础也能看懂,适合 AI 编程、后端开发者入门学习。

一、先分清:镜像 vs 容器(最核心基础概念)


1 镜像(Image)


只读静态模板,内置程序运行全套依赖:代码、运行库、配置、环境。
类比:

  • 编程视角:类 Class
  • 通俗视角:安装包、系统安装盘
    镜像不可修改,多层只读结构,一台机器可基于同一个镜像创建无数个独立容器。

2 容器(Container)


镜像运行时的实例,在只读镜像顶层新增一层可写层,所有修改、文件写入全部存在这一层。
类比:

  • 编程视角:实例 Object
  • 通俗视角:打开运行好的软件程序

一句话总结:镜像是静态文件,容器是正在运行的隔离环境;一个镜像可生成成千上百个容器。

二、容器四大核心底层特性


  • 可写临时层
    容器运行产生日志、配置修改、新增文件全部存于顶层可写层。一旦容器删除,可写层数据全部销毁,这是数据库等业务必须做持久化挂载的根本原因。
  • 强隔离性
    容器通过 Namespace、Cgroups 实现资源、网络、文件系统隔离,多个容器互不干扰,互不污染环境。本地同时跑 AI 模型、Web 服务、数据库不会端口、依赖冲突。
  • 轻量化可迁移
    同一镜像打包的容器,本地、云服务器、笔记本环境完全一致,解决 “本地能跑线上报错” 经典环境问题。
  • 生命周期可控
    支持创建、启动、暂停、重启、删除完整流程,秒级启停,比虚拟机资源占用低数十倍。

三、核心入口:docker run 全参数实战详解


docker run是最常用命令,一条指令完成:拉取镜像→创建容器→启动进程。

1 最简测试示例


bash
  1. docker run hello-world
复制代码

自动拉取 hello 镜像,运行输出测试文本,验证 Docker 环境正常。

2 生产标准后台服务(Nginx 网站案例)


bash

  1. docker run -d --name webserver -p 8080:80 --restart=always nginx:1.25
复制代码

参数拆解:

  • -d detach:后台守护进程运行,不占用终端
  • --name webserver:给容器命名,后续管理不用记容器 ID
  • -p 宿主机端口:容器端口 端口映射:本机 8080 访问容器 80 服务
  • --restart=always 容器异常退出自动重启,线上必备
  • nginx:1.25 指定固定版本镜像,禁止 latest 模糊标签,避免环境突变稀土掘金

访问浏览器 http://localhost:8080 即可打开 Nginx 页面。

3 交互式容器(进入系统终端,调试 AI 环境)


bash

  1. docker run -it ubuntu:22.04 /bin/bash
复制代码
  1. -it = -i持续输入 + -t分配虚拟终端,直接进入容器内部操作文件、安装依赖、调试大模型环境。退出输入exit。
复制代码


4 一次性临时容器(用完自动销毁)


bash

  1. docker run --rm ubuntu:22.04 echo "测试文本"
复制代码

--rm:命令执行完毕自动删除容器,适合临时测试、一次性脚本,避免残留无用容器。

四、容器状态查看命令


  • 查看当前正在运行容器

bash
  1. docker ps
复制代码

展示容器 ID、名称、镜像、端口、运行时长。
2. 查看全部容器(含已停止)

bash
  1. docker ps -a
复制代码

  • 实时查看容器日志(排查 AI 报错、服务崩溃)

bash

  1. # 打印全部日志docker logs webserver# 实时跟踪日志,类似tail -fdocker logs -f webserver# 只看最后200行实时日志docker logs -f --tail 200 webserver

复制代码


  • 查看容器 CPU、内存、磁盘实时占用

bash

  1. docker stats
复制代码

AI 大模型调试时,用来监控显存 / 内存占用溢出问题。

五、容器启停、暂停、重启控制命令


  • 优雅停止(发送 SIGTERM 信号,预留 10 秒程序收尾)

bash

  1. docker stop webserver# 自定义超时30秒再强制关闭docker stop -t 30 webserver
复制代码

  • 强制杀死(直接终止进程,生产慎用,易丢数据)

bash

  1. docker kill webserver
复制代码

  • 启动已停止容器

bash

  1. docker start webserver
复制代码


  • 重启(等价 stop + start)

bash

  1. docker restart webserver
复制代码

  • 冻结 / 解冻容器(临时释放算力,AI 多任务调试常用)

bash

  1. docker pause webserverdocker unpause webserver
复制代码


六、删除容器 & 环境清理命令


  • 删除已停止容器

bash
  1. docker rm webserver
复制代码

  • 强制删除正在运行的容器

bash

  1. docker rm -f webserver
复制代码


  • 一键清理本机所有停止的容器(日常维护)

bash

  1. docker container prune
复制代码

  • 深度清理:无用容器、悬空镜像、闲置网络

bash

  1. docker system prune
复制代码

七、运行中容器内部操作:docker exec 关键区分


很多新手混淆run和exec,核心差异:

  • docker run:基于镜像新建一个容器运行程序
  • docker exec:进入已经存在、正在运行的容器执行命令

1 进入运行容器终端(最常用)


bash
  1. docker exec -it webserver /bin/bash# 部分轻量alpine镜像无bash,使用shdocker exec -it webserver /bin/sh
复制代码

可在容器内修改配置、查看 AI 模型文件、调试代码。

2 不进入终端,单条远程执行指令


bash

  1. # 直接查看容器根目录文件docker exec webserver ls /
复制代码

八、容器生命周期完整流程


镜像拉取 → docker run 创建并启动容器
运行中:可 logs 查看日志、exec 进入、pause 冻结
主动 / 异常停止:stop/kill
停止状态:可 start 重启、可 rm 永久删除
删除后:仅容器可写层销毁,原始镜像保留不受影响

九、容器数据持久化补充(AI 项目必备知识点)


容器默认可写层随删除丢失,数据库、训练模型、配置文件必须挂载数据卷-v持久化:

bash

  1. # 宿目录挂载,代码/模型热更新docker run -d --name ai-server -v /本地模型文件夹:/容器内模型目录 -p 7860:7860 ai:v4
复制代码


挂载后即便容器删除,模型、数据保存在宿主机不会丢失,是 AI 训练、数据库容器生产刚需。

十、新手 & 生产环境实战规范建议


  • 必命名容器:--name 统一命名,不用随机 ID 管理;
  • 禁止 latest 镜像,固定版本号,避免环境突然变动;
  • 线上服务强制添加--restart=always自动重启;
  • 临时测试容器统一加--rm,避免堆积无用容器;
  • AI、数据库等存文件业务,必须使用-v挂载持久化;
  • 定期执行docker container prune清理停止容器释放磁盘;
  • 调试用docker logs -f实时排查报错,不用反复重启容器;
    8 区分 run 与 exec:新建环境用 run,操作已有容器用 exec。

结语


容器是镜像的运行实例,隔离、轻量化、可迁移三大优势让它成为 AI 训练、Web 开发标准工具。本文覆盖从基础概念到线上生产全套高频命令,理清镜像只读层、容器可写层底层逻辑,分清 run/exec、stop/kill 等易混淆指令。
掌握这套基础操作后,即可独立搭建本地 AI 容器环境、部署线上服务,后续再进阶学习 Dockerfile、Compose 多容器编排。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

QQ客服返回顶部