Docker核心要点和指令速通
# Docker 核心要点 + 常用指令 极速速通
## 一、Docker 核心概念(必背)
### 1. 三大核心
1. **镜像(Image)**
只读模板、应用运行环境快照,类比「安装包」。
2. **容器(Container)**
镜像运行实例,独立隔离进程,类比「运行中的软件」。
3. **仓库(Registry)**
存放镜像的仓库,默认:Docker Hub。
### 2. 核心架构
- **C/S 架构**:客户端 docker CLI + 服务端 dockerd
- **核心优势**:一次构建、随处运行;环境隔离;轻量化;资源占用低
- **底层技术**:Namespace(隔离)+ Cgroup(资源限制)+ 联合文件系统
### 3. 镜像分层
- 镜像多层只读,容器在**最上层读写层**
- 分层缓存,复用层、秒级拉取、节省存储
### 4. 关键文件
- `Dockerfile`:镜像构建脚本
- `docker-compose.yml`:多容器编排
---
## 二、Docker 安装 & 基础信息
```bash
# 查看版本
docker -v
# 查看系统信息
docker info
# 检测服务是否启动
systemctl status docker
# 开机自启
systemctl enable docker
```
---
## 三、镜像常用命令
```bash
# 1. 搜索镜像
docker search 镜像名
# 2. 拉取镜像(默认latest最新版)
docker pull 镜像名:标签
# 3. 查看本地所有镜像
docker images
# 4. 删除镜像(必须先删依赖容器)
docker rmi 镜像ID/镜像名
# 5. 导出/导入镜像
docker save -o 文件名.tar 镜像名
docker load -i 文件名.tar
# 6. 清理无用镜像
docker image prune -a
```
---
## 四、容器核心命令(最高频)
### 1. 创建并启动容器
```bash
# 基础格式
docker run [参数] 镜像名:标签
# 常用参数
-d # 后台运行(守护进程)
-p 宿主机端口:容器端口 # 端口映射
--name 容器名 # 自定义容器名
--restart=always # 开机自启
-v 宿主机目录:容器目录 # 数据挂载
-e 环境变量=值 # 设置环境变量
--network=网络名 # 指定网络
```
示例:
```bash
docker run -d -p 8080:80 --name nginx-demo nginx
```
### 2. 容器启停
```bash
# 查看正在运行容器
docker ps
# 查看所有容器(含停止)
docker ps -a
# 启动/停止/重启
docker start 容器ID/容器名
docker stop 容器ID/容器名
docker restart 容器ID/容器名
# 强制杀死容器
docker kill 容器ID
```
### 3. 进入容器
```bash
# 交互式进入终端
docker exec -it 容器ID /bin/bash
# 退出容器(不停止)
exit
```
### 4. 容器日志 & 资源
```bash
# 查看日志
docker logs 容器ID
# 实时滚动日志
docker logs -f 容器ID
# 查看容器资源占用
docker stats
```
### 5. 删除容器
```bash
# 删除停止的容器
docker rm 容器ID
# 强制删除运行中容器
docker rm -f 容器ID
# 清理所有停止容器
docker container prune
```
### 6. 文件拷贝
```bash
# 宿主机 → 容器
docker cp 宿主机文件 容器ID:容器路径
# 容器 → 宿主机
docker cp 容器ID:容器路径 宿主机路径
```
---
## 五、数据持久化(3种方式)
1. **绑定挂载 -v**:宿主机目录直接映射,常用配置/数据持久化
2. **数据卷 Volume**:Docker 统一管理目录,生命周期独立
3. **临时文件系统**:临时存储,容器销毁丢失
```bash
# 创建数据卷
docker volume create vol-name
```
---
## 六、Docker 网络
```bash
# 查看网络
docker network ls
# 自定义桥接网络(推荐容器互联)
docker network create my-net
# 容器加入指定网络
docker run --network=my-net ...
```
- `bridge`:默认桥接,单机容器互通
- `host`:共用宿主机网络,无端口映射
- `none`:禁用网络
---
## 七、Dockerfile 镜像构建
### 常用指令
```dockerfile
FROM # 基础镜像
WORKDIR # 工作目录
COPY/ADD # 复制文件
RUN # 构建时执行命令
ENV # 环境变量
EXPOSE # 声明端口
CMD # 容器启动默认命令(仅最后一条生效)
ENTRYPOINT # 入口命令
```
### 构建镜像
```bash
docker build -t 自定义镜像名:版本 .
```
---
## 八、Docker Compose 多容器编排
```bash
# 前台启动
docker-compose up
# 后台启动
docker-compose up -d
# 停止
docker-compose down
# 重启/查看日志
docker-compose restart
docker-compose logs -f
```
极简模板示例:
```yaml
version: "3.8"
services:
nginx:
image: nginx
ports:
- "80:80"
restart: always
```
---
## 九、一键清理(运维必备)
```bash
# 清理全部无用资源(镜像+容器+网络+缓存)
docker system prune -a
```
---
## 十、高频命令速查表(背诵版)
1. 拉取:`docker pull xxx`
2. 运行:`docker run -d -p 端口:端口 --name 名 镜像`
3. 列表:`docker ps / docker ps -a`
4. 进入:`docker exec -it 容器ID /bin/bash`
5. 日志:`docker logs -f 容器ID`
6. 删除镜像:`docker rmi 镜像ID`
7. 删除容器:`docker rm -f 容器ID`
8. 构建:`docker build -t name:v1 .`
9. 编排:`docker-compose up -d`




