技术学习笔记
用于记录 Docker、Docker Compose、 ChatGPT、AI 工具以及服务器部署相关知识。
Docker 基础
Docker 是一种容器化技术,可以把程序、 依赖环境和配置封装成统一镜像, 从而解决“在我的电脑上能运行”的环境差异问题。
Image 是模板,Container 是运行中的实例, Volume 用于持久化数据, Network 用于容器之间通信。
| 概念 | 作用 |
|---|---|
| Image | Docker 镜像,相当于应用运行模板 |
| Container | 镜像启动后的运行实例 |
| Volume | 保存数据库、日志和其他持久数据 |
| Network | 实现容器之间的网络通信 |
| Dockerfile | 定义如何构建 Docker 镜像 |
| Compose | 管理多个容器组成的应用 |
Docker 常用命令
查看 Docker 版本
docker --version
docker version
查看运行中的容器
docker ps
查看所有容器
docker ps -a
查看镜像
docker images
拉取镜像
docker pull nginx
docker pull mysql:8.0
启动容器
docker start nginx
停止容器
docker stop nginx
查看日志
docker logs nginx
docker logs -f nginx
进入容器
docker exec -it nginx bash
删除容器
docker rm nginx
删除镜像
docker rmi nginx
Docker Compose
Docker Compose 用于一次性管理多个容器。 例如一个 Web 系统通常包含:
Nginx
│
▼
FastAPI
│
▼
MySQL
启动
docker compose up -d
停止
docker compose down
查看状态
docker compose ps
查看日志
docker compose logs -f
重新创建容器
docker compose up -d --force-recreate
Docker 数据持久化
容器本身可以随时删除, 因此数据库数据不能只保存在容器内部。
MySQL 常见挂载:
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf.d:/etc/mysql/conf.d
左边:
./mysql/data
是服务器本地目录。
右边:
/var/lib/mysql
是容器内部目录。
ChatGPT 基础
ChatGPT 可以作为代码助手、学习助手、 产品设计助手、文档助手和问题分析工具。
不要只告诉 AI “帮我做某件事”, 尽量告诉它背景、目标、约束条件和期望输出。
普通 Prompt
帮我写一个 Docker Compose
更好的 Prompt
帮我创建一个 Docker Compose。
要求:
1. Ubuntu 22.04
2. MySQL 8
3. Nginx
4. MySQL 数据持久化到 ./mysql/data
5. Nginx 配置持久化到 ./nginx/conf.d
6. 自动重启
7. 使用独立 Docker Network
8. 给出完整 compose.yaml
Prompt 编写技巧
一个比较稳定的 Prompt 可以采用:
角色
+
背景
+
任务
+
约束
+
输入
+
输出格式
示例
你是一名资深 Linux 运维工程师。
背景:
Ubuntu 服务器运行 Docker。
任务:
排查 Docker 服务启动失败。
错误:
failed to load listeners
要求:
1. 分析原因
2. 给出排查顺序
3. 给出具体命令
4. 不要直接删除 Docker 数据
AI 工作流
使用 ChatGPT 做技术工作的一个推荐流程:
需求
↓
ChatGPT 分析
↓
生成方案
↓
生成代码
↓
实际运行
↓
复制错误日志
↓
ChatGPT 排查
↓
修改
↓
再次验证
不要追求一次生成完美代码, 更有效的方式是让 AI 参与整个迭代过程。
学习方法
Docker 学习路线
Linux 基础
↓
Docker Image
↓
Container
↓
Volume
↓
Network
↓
Dockerfile
↓
Docker Compose
↓
Nginx
↓
MySQL
↓
Redis
↓
CI/CD
↓
Kubernetes
ChatGPT 学习路线
基础提问
↓
结构化 Prompt
↓
代码生成
↓
代码 Debug
↓
文档分析
↓
工具调用
↓
API
↓
Agent
↓
AI 工作流
学技术最有效的方法不是只看教程, 而是搭建真实项目,在遇到问题时逐个解决。