Docker核心要点和指令速通
# Docker 核心要点 + 常用命令 极速速通(面试/实操一秒上手)
## 一、Docker 核心概念(必背)
### 1. 三大核心
1. **镜像 Image**:只读模板(程序+环境+依赖),相当于「安装包」
2. **容器 Container**:镜像运行实例,独立隔离环境,相当于「运行中的软件」
3. **仓库 Registry**:存放镜像(Docker Hub、阿里云镜像)
### 2. 核心原理
- 底层:**Linux 内核 Namespace(隔离) + Cgroups(资源限制) + 联合文件系统(分层)**
- 特点:秒级启动、环境一致、轻量化、一次打包到处运行
- 对比虚拟机:Docker 共享宿主机内核,体积小、性能高
### 3. 分层机制
- 镜像分层存储,只读;容器上层**可写层**
- 多个容器共用底层镜像,节省空间
---
## 二、Docker 安装 & 基础环境(CentOS7)
```bash
# 安装docker
yum install -y docker-ce
# 启动/开机自启
systemctl start docker
systemctl enable docker
# 查看版本
docker -v
```
---
## 三、Docker 核心命令分类(高频)
### 1. 镜像操作
```bash
# 1. 搜索镜像
docker search 关键词
# 2. 拉取镜像
docker pull 镜像名:版本
# 示例
docker pull nginx:latest
docker pull centos:7
# 3. 查看本地镜像
docker images
# 4. 删除镜像
docker rmi 镜像ID/镜像名
# 5. 打包镜像(导出)
docker save -o 文件名.tar 镜像名
# 6. 导入镜像
docker load -i 文件名.tar
```
### 2. 容器操作(最重要)
```bash
# 1. 创建并启动容器
docker run [参数] 镜像名
# 常用参数
-d # 后台运行
--name # 指定容器名称
-p 宿主机端口:容器端口 # 端口映射
-v 宿主机目录:容器目录 # 数据挂载
--restart=always # 开机自启
-it # 交互式进入终端
# 示例:启动nginx
docker run -d --name nginx -p 80:80 nginx
# 2. 查看容器
docker ps # 运行中容器
docker ps -a # 所有容器(含停止)
# 3. 启动/停止/重启容器
docker start 容器ID
docker stop 容器ID
docker restart 容器ID
# 4. 进入容器内部
docker exec -it 容器ID /bin/bash
# 5. 删除容器(必须先停止)
docker rm 容器ID
# 6. 查看容器日志
docker logs 容器ID
# 7. 查看容器资源占用
docker stats
```
### 3. 数据卷(持久化)
解决:容器删除数据丢失
```bash
# 挂载目录
-v /宿主机路径:/容器路径
# 查看所有数据卷
docker volume ls
```
### 4. 镜像构建(自定义镜像)
1. 编写 `Dockerfile`
2. 构建镜像
```bash
docker build -t 自定义镜像名:版本 .
```
---
## 四、Dockerfile 常用指令(写镜像必备)
```dockerfile
FROM # 基础镜像
MAINTAINER # 作者信息
RUN # 构建时执行命令
COPY # 复制文件到容器
ADD # 复制+自动解压
WORKDIR # 工作目录
EXPOSE # 声明暴露端口
ENV # 设置环境变量
CMD # 容器启动默认命令
```
---
## 五、Docker 网络基础
- **bridge**:默认桥接,容器间互通,端口映射外网访问
- **host**:共用宿主机网络,无端口映射
- **none**:关闭网络隔离
```bash
# 查看网络
docker network ls
```
---
## 六、一键清理(运维常用)
```bash
# 清理停止的容器、无用镜像
docker system prune -a
```
---
## 七、高频面试简答
1. 镜像和容器区别:
镜像静态只读模板;容器是镜像运行实例,可读写、独立隔离。
2. 容器数据怎么持久化:
使用 **-v 数据卷挂载**。
3. docker run 和 docker start 区别:
run:新建+启动;start:只启动已存在容器。



