1006 字
约 3 分钟
10
S15-J04 · Docker 基础:镜像、容器、数据卷

适用读者:会 docker run 但说不清"容器和虚拟机差在哪"的人。
前置:S15-B04。
实测环境:Docker(Ubuntu 24.04 宿主)/ alpine:3.20(2026-11-05)。
覆盖旧文:21 张 Docker 卡 + 3 张命令卡 = 866 点。
覆盖扩展:E-S15-006(容器 vs 虚拟机)、E-S15-015(数据卷与容器生命周期)。
上一篇:S15-J03 · 抓包与网络排障
下一篇:S15-J05 · Dockerfile 与 Compose。


1. 一句话结论

虚拟机虚拟的是"硬件",容器隔离的是"进程"——所以容器秒级启动、镜像分层复用,但它和宿主共享内核。

维度 虚拟机 容器
隔离层 Hypervisor + 完整 OS namespace + cgroup
启动 分钟级 秒级
体积 GB 级 MB 级
内核 各用自己的 共享宿主内核

"共享内核"意味着:Windows 宿主跑不了 Linux 容器(除非 WSL2/虚拟化);容器里不能换内核。


2. 三个概念(E-S15-006)

概念 是什么 生命周期
镜像(image) 只读模板(分层) 长期
容器(container) 镜像的运行实例(可写层) 创建/停止/删除
卷(volume) 独立于容器的持久存储 独立

实测(数据卷持久化):

docker volume create s15vol
docker run --rm -v s15vol:/data alpine:3.20 sh -c 'echo persist > /data/f.txt'
docker run --rm -v s15vol:/data alpine:3.20 cat /data/f.txt    # → persist

"容器删了数据还在吗":在卷里就在;写在容器可写层 → 删容器即丢。


3. 最常用的 12 条命令

目的 命令
拉镜像 docker pull alpine:3.20
看本地镜像 docker images
运行 docker run -d -p 8080:8080 --name app img
看容器 docker ps / docker ps -a
进容器 docker exec -it app sh
看日志 docker logs -f app
停止/启动 docker stop app / docker start app
删除容器 docker rm -f app
删除镜像 docker rmi img
看资源 docker stats
看分层 docker history img
导出/导入 docker save / docker load

一个实测坑:运行不存在的本地镜像时,docker 会尝试从仓库拉取:

Unable to find image 's15demo:v1' locally
docker: Error response from daemon: pull access denied for s15demo

"为什么报 pull access denied":它以为你要拉一个叫 s15demo 的远程镜像 → 先确认本地构建成功。


4. 端口、网络与挂载

写法 含义
-p 8080:80 宿主 8080 → 容器 80
-p 127.0.0.1:8080:80 只绑本机(更安全)
-v /host/path:/container/path 绑定挂载(宿主机目录)
-v volname:/path 命名卷(推荐)
--network host 用宿主网络(端口不隔离)

判据:"这个端口要给公网吗?" 不给 → 绑定 127.0.0.1(S15-J03 的"本机通外网不通"就是这里)。


5. 五个误区

误区 真相
"容器=轻量虚拟机" 共享内核,隔离的是进程
"容器删了数据一定丢" 在卷里不丢
"镜像找不到会本地报错" 会尝试远程拉取
"-p 随便写就行" 绑定地址决定暴露面
"容器里能改内核参数" 共享内核,需宿主设置

6. 自检

  1. 容器与虚拟机的三点差异?
  2. 镜像、容器、卷的生命周期?
  3. 数据卷为什么能持久化?
  4. 运行不存在的镜像会怎样?
  5. -p 127.0.0.1:8080:80 与 -p 8080:80 的差别?

7. 下一篇

S15-J05 · Dockerfile 与 Compose

容器讲完,下一篇讲"怎么做出小镜像":分层、多阶段构建(实测 20.8MB → 12.1MB)。


本篇属于系列《S15 · Linux 与运维》。旧文来源:24 张 Docker 卡;扩展点 E-S15-006/015。镜像、卷与报错为真实 docker 实测。

S15-J04 · Docker 基础:镜像、容器、数据卷
https://www.clxhxhhr.top/posts/5398/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。