题目
解释 Docker 镜像与容器的区别及基本操作
信息
- 类型:问答
- 难度:⭐
考点
Docker镜像概念,容器运行原理,基本命令
快速回答
Docker镜像是只读模板,容器是镜像的运行实例:
- 镜像:包含应用代码、依赖和配置的静态文件
- 容器:镜像的动态运行环境,具有独立进程空间
- 核心命令:
docker pull获取镜像,docker run启动容器
1. 核心概念对比
| 特性 | 镜像 (Image) | 容器 (Container) |
|---|---|---|
| 本质 | 只读的静态模板(类似安装包) | 镜像的运行实例(类似运行中的程序) |
| 存储 | 分层存储(Layer) | 在镜像层上加可写层 |
| 生命周期 | 持久化存储 | 临时运行(可停止/删除) |
| 修改 | 不可直接修改(需重建) | 运行时修改仅影响当前容器 |
2. 工作原理图解
+-------------------+ +-----------------+
| Docker镜像 |----->| Docker容器 |
| (nginx:1.23-alpine)| | (运行中的Web服务器)|
+-------------------+ +-----------------+
↑ 只读模板 ↑ 动态实例
| | 可读写层
+---------------------------+3. 基础命令示例
获取镜像:
# 从Docker Hub下载官方Nginx镜像
docker pull nginx:1.23-alpine启动容器:
# 启动容器并映射端口
docker run -d --name my-web \
-p 8080:80 \
nginx:1.23-alpine验证运行:
# 查看运行中的容器
docker ps
# 访问容器服务
curl http://localhost:80804. 最佳实践
- 优先使用官方镜像(如nginx而非自定义)
- 容器应保持无状态,重要数据使用Volume存储
- 通过
docker rm -v删除容器时同时清理关联资源
5. 常见错误
- 误删镜像后导致容器无法重建 → 定期备份重要镜像
- 端口冲突(
-p 8080:80中主机端口重复)→ 使用docker ps检查占用 - 忘记
-d参数导致终端被占用 → 使用分离模式运行
6. 扩展知识
- 镜像分层:镜像由多层只读层组成,容器启动时添加可写层
- 写时复制(Copy-on-Write):容器修改文件时复制镜像层数据到容器层
- 容器生命周期:created → running → paused/unpaused → stopped → deleted