docs(docker): 新增 Docker 基础入门教程文档

- 介绍 Docker 核心概念,包括镜像、容器和仓库
- 详述常用 Docker 镜像和容器操作命令
- 提供 MySQL、Redis 及 Nginx 容器运行实战示例
- 讲解 Dockerfile 基础和构建镜像示例
- 说明 Docker Compose 配置及常用命令
- 涵盖数据卷和网络管理相关命令
- 列出常用的 Docker 清理命令
- 总结 Docker 镜像优化、安全建议及性能优化实践
- 提供故障排查命令和参考资源链接
- 附加后续学习建议,帮助用户深入掌握 Docker 技能
This commit is contained in:
liumangmang
2025-12-17 17:40:09 +08:00
parent f6016d4570
commit c62abe7c1f

View File

@@ -0,0 +1,367 @@
---
title: Docker 基础入门
icon: mdi:docker
date: 2025-12-17
category:
- Docker
tag:
- 容器
- Docker
- 入门教程
---
# Docker 基础入门
## 什么是 Docker
Docker 是一个开源的容器化平台,可以让开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上。
### 核心概念
- **镜像Image**:只读模板,包含运行应用所需的所有内容(代码、运行时、库、环境变量和配置文件)
- **容器Container**:镜像的运行实例,是一个轻量级、独立的可执行包
- **仓库Registry**存储和分发镜像的服务Docker Hub 是最大的公共仓库
## Docker 基础命令
### 镜像操作
```bash
# 搜索镜像
docker search <镜像名>
# 拉取镜像
docker pull <镜像名>[:标签]
# 列出本地镜像
docker images
# 删除镜像
docker rmi <镜像ID或名称>
# 查看镜像详细信息
docker inspect <镜像ID>
```
### 容器操作
```bash
# 运行容器
docker run [选项] <镜像名> [命令]
# 常用选项:
# -d后台运行
# -p端口映射 主机端口:容器端口
# --name指定容器名称
# -v挂载数据卷 主机路径:容器路径
# -e设置环境变量
# --rm容器停止后自动删除
# 示例:运行 Nginx
docker run -d -p 8080:80 --name my-nginx nginx
# 列出运行中的容器
docker ps
# 列出所有容器(包括停止的)
docker ps -a
# 启动/停止/重启容器
docker start <容器ID或名称>
docker stop <容器ID或名称>
docker restart <容器ID或名称>
# 删除容器
docker rm <容器ID或名称>
# 强制删除运行中的容器
docker rm -f <容器ID或名称>
# 查看容器日志
docker logs <容器ID或名称>
# 实时查看日志
docker logs -f <容器ID或名称>
# 进入容器
docker exec -it <容器ID或名称> /bin/bash
# 或
docker exec -it <容器ID或名称> sh
```
## 实战示例
### 1. 运行 MySQL 容器
```bash
docker run -d \
--name mysql-server \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-v /my/data:/var/lib/mysql \
mysql:8.0
```
### 2. 运行 Redis 容器
```bash
docker run -d \
--name redis-server \
-p 6379:6379 \
redis:latest
```
### 3. 运行 Nginx 并挂载静态文件
```bash
docker run -d \
--name nginx-web \
-p 80:80 \
-v /path/to/html:/usr/share/nginx/html \
nginx:latest
```
## Dockerfile 基础
Dockerfile 是用于构建自定义镜像的文本文件。
### 常用指令
```dockerfile
# 基础镜像
FROM ubuntu:20.04
# 维护者信息
LABEL maintainer="your-email@example.com"
# 工作目录
WORKDIR /app
# 复制文件
COPY . /app
# 添加文件(支持 URL 和自动解压)
ADD app.tar.gz /app
# 执行命令
RUN apt-get update && apt-get install -y python3
# 设置环境变量
ENV APP_ENV=production
# 暴露端口
EXPOSE 8080
# 容器启动时执行的命令
CMD ["python3", "app.py"]
# 或使用 ENTRYPOINT
ENTRYPOINT ["python3", "app.py"]
```
### 构建镜像示例
创建一个简单的 Python 应用 Dockerfile
```dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
```
构建和运行:
```bash
# 构建镜像
docker build -t my-python-app:1.0 .
# 运行容器
docker run -d -p 5000:5000 --name my-app my-python-app:1.0
```
## Docker Compose
Docker Compose 用于定义和运行多容器 Docker 应用。
### docker-compose.yml 示例
```yaml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: myapp
volumes:
- db-data:/var/lib/mysql
ports:
- "3306:3306"
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
db-data:
```
### Compose 常用命令
```bash
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs -f
# 重启服务
docker-compose restart
# 构建服务
docker-compose build
```
## 数据卷管理
### 创建和使用数据卷
```bash
# 创建数据卷
docker volume create my-volume
# 列出数据卷
docker volume ls
# 查看数据卷详情
docker volume inspect my-volume
# 使用数据卷
docker run -d -v my-volume:/data nginx
# 删除数据卷
docker volume rm my-volume
# 清理未使用的数据卷
docker volume prune
```
## 网络管理
```bash
# 列出网络
docker network ls
# 创建网络
docker network create my-network
# 将容器连接到网络
docker run -d --network my-network --name web nginx
# 查看网络详情
docker network inspect my-network
# 删除网络
docker network rm my-network
```
## 常用清理命令
```bash
# 删除所有停止的容器
docker container prune
# 删除所有未使用的镜像
docker image prune -a
# 删除所有未使用的数据卷
docker volume prune
# 删除所有未使用的网络
docker network prune
# 一键清理所有未使用的资源
docker system prune -a --volumes
```
## 最佳实践
### 1. 镜像优化
- 使用轻量级基础镜像(如 alpine
- 合并 RUN 命令减少层数
- 使用 `.dockerignore` 排除不需要的文件
- 多阶段构建减小最终镜像大小
### 2. 安全建议
- 不要以 root 用户运行应用
- 定期更新基础镜像
- 扫描镜像漏洞
- 使用官方镜像或可信来源
### 3. 性能优化
- 合理使用缓存
- 限制容器资源CPU、内存
- 使用健康检查
- 合理配置日志驱动
## 故障排查
```bash
# 查看容器详细信息
docker inspect <容器ID>
# 查看容器资源使用情况
docker stats
# 查看容器进程
docker top <容器ID>
# 从容器复制文件到主机
docker cp <容器ID>:/path/to/file /host/path
# 从主机复制文件到容器
docker cp /host/path <容器ID>:/path/to/file
```
## 参考资源
- [Docker 官方文档](https://docs.docker.com/)
- [Docker Hub](https://hub.docker.com/)
- [Docker Compose 文档](https://docs.docker.com/compose/)
---
**下一步学习建议**
1. 实践基础命令,熟悉容器操作
2. 尝试编写 Dockerfile 构建自己的镜像
3. 学习 Docker Compose 编排多容器应用
4. 了解 Docker 网络和数据持久化
5. 探索容器编排工具(如 Kubernetes