chore: 清理 .trae 旧文件,新增多篇博客文章

- 删除 .trae/ 目录(Trae IDE 旧配置)
- 删除 temp-agent-os-v2.md
- 新增:AI时代的Token战争——能源算力与我们每个人的选择
- 新增:自建Git服务——在NAS上部署Gitea
- 新增:Docker安装与入门指南
- 更新:Git团队协作指南
- 更新:recent-files-obsidian 插件数据
This commit is contained in:
2026-07-23 22:02:35 +08:00
parent ffa6cbe4d1
commit 2dd12d0b67
21 changed files with 4710 additions and 3000 deletions
@@ -0,0 +1,408 @@
---
title: Docker 安装与入门指南
date: 2026-05-08
author: liuhangyv
excerpt: 从零开始学习 Docker:详解 Windows 下通过 Docker Desktop 安装 Docker 的完整流程,以及云服务器(阿里云)上的 Docker 部署方式,附带常用命令速查。
---
# Docker 安装与入门指南
本文面向**零基础读者**,从环境准备到安装完成,一步一步带你上手 Docker。内容聚焦两种最常见的安装场景:
- **场景一**Windows 本机通过 Docker Desktop 安装 Docker
- **场景二**:云服务器(以阿里云为例)上安装 Docker
本文不涉及 Docker Compose、多容器编排等进阶内容,力求用最短的篇幅帮你把 Docker **跑起来**
---
## 1. 什么是 Docker?为什么需要它?
Docker 是一个**容器化平台**,它把应用程序和它的所有依赖打包在一起,形成一个独立的"容器",这个容器可以在任何装了 Docker 的机器上运行,不会因为系统环境不同而出问题。
**一句话理解**:Docker 就像一个轻量级的虚拟机,但比虚拟机快得多、占用资源少得多。
**典型场景**
- 你在 Windows 上开发,但服务器是 Linux——用 Docker,代码在哪跑都一样
- 你想学数据库,但不想在本机装一堆服务——Docker 一行命令就能起一个 MySQL/PostgreSQL
- 你想跑别人写的开源项目,但环境配置太复杂——Docker 一个命令全部搞定
---
## 2. 场景一:Windows 下安装 Docker Desktop
Docker Desktop 是 Docker 官方为 Windows 用户提供的一键安装方案,内置了 WSL2 后端、图形化管理界面,也是官方的推荐方式。
### 2.1 下载与安装
1. 访问 [Docker 官网](https://www.docker.com/products/docker-desktop/),点击 **Download for Windows**
2. 下载完成后运行安装程序,**所有默认选项保持不动即可**,安装程序会自动配置好 WSL2
3. 安装完成后重启电脑
4. 重启后 Docker Desktop 会自动启动,你可以在系统托盘看到 Docker 的鲸鱼图标
> **说明**Docker Desktop 安装时会自动安装 WSL2 并创建两个 WSL 发行版(`docker-desktop` 和 `docker-desktop-data`),你无需手动安装 Ubuntu,也不需要关心 WSL2 的细节。
### 2.2 验证安装
打开 **PowerShell****命令提示符**,执行:
```powershell
# 检查 Docker 版本
docker --version
# 输出示例:Docker version 28.0.1, build ...
# 检查 Docker Compose 版本(已内置)
docker compose version
# 运行测试容器
docker run --rm hello-world
```
看到 `Hello from Docker!` 就说明安装成功了。
### 2.3 日常使用
Docker Desktop 开机后会自动在后台运行。使用时直接在 PowerShell 或终端中敲 `docker` 命令即可,和 Linux 下的体验完全一致。
小技巧:右键点击系统托盘的鲸鱼图标,可以快速打开 Dashboard 图形化管理界面,查看所有容器、镜像、数据卷的状态。
---
## 3. 场景二:云服务器上安装 Docker
拥有一台云服务器是学习 Docker 的理想方式——它能 24 小时运行,你可以部署自己的服务并随时随地访问。
### 3.1 选购云服务器
以笔者的**阿里云 ECS** 为例:
| 项目 | 配置 |
|------|------|
| **实例规格** | 2 vCPU / 2 GiB 内存 |
| **操作系统** | Ubuntu 22.04 LTS64 位) |
| **系统盘** | 40 GiB ESSD |
| **公网 IP** | 101.133.128.193 |
| **带宽** | 按量计费 |
> **学生党建议**:阿里云有学生优惠,一年几十块钱就能买到基础配置的 ECS,足够学习使用。
购买时注意:
- 操作系统选 **Ubuntu 22.04****Ubuntu 24.04**,生态最好
- 安全组(防火墙)默认只开放 22(SSH)端口,后续根据需要手动开放其他端口
- 创建时选择密钥对登录,比密码更安全
### 3.2 登录服务器
```bash
# 使用 SSH 连接(替换 IP 为你的服务器 IP)
ssh root@你的服务器IP
# 如果使用密钥
ssh -i ~/.ssh/你的密钥 root@你的服务器IP
```
> 笔者的习惯:创建一个普通用户 `admin` 来管理,避免直接使用 `root`。并配置 `~/.ssh/authorized_keys` 实现免密登录。
### 3.3 安装 Docker(与 Ubuntu 下完全一致)
登录服务器后,执行的安装命令和 Linux 下完全一致。由于阿里云的 Ubuntu 是标准的 Linux 系统,安装步骤与上面 Windows 无关——下面是完整的安装命令:
```bash
# 安装 Docker Engine(适用于 Ubuntu
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
newgrp docker
```
### 3.4 云服务器的额外配置
服务器重启后 Docker **会自动随系统启动**(通过 systemd 管理),无需额外配置。
但需要配置**安全组(防火墙)**,否则外部无法访问你的服务:
1. 登录阿里云控制台 → ECS → 安全组
2. 添加规则,例如:
| 方向 | 端口 | 协议 | 用途 |
|------|------|------|------|
| 入方向 | 80 | TCP | HTTP |
| 入方向 | 443 | TCP | HTTPS |
| 入方向 | 8080 | TCP | 测试应用 |
| 入方向 | 3000 | TCP | Node.js 开发 |
> ⚠️ 不要开放 22SSH)的源 IP 为 `0.0.0.0/0`,建议仅允许你的 IP。数据库端口(如 3306、5432)也不要对公网开放。
---
## 4. Docker 基本使用
安装完成后,我们来上手几个最核心的命令。
### 4.1 运行你的第一个容器
```bash
# 运行 Nginx 网页服务器
docker run -d --name my-nginx -p 8080:80 nginx:latest
```
参数说明:
- `-d`:后台运行
- `--name my-nginx`:给容器取名
- `-p 8080:80`:把宿主机的 8080 端口映射到容器的 80 端口
- `nginx:latest`:使用的镜像名和标签
现在打开浏览器,访问:
- 本地:`http://localhost:8080`
- 云服务器:`http://你的服务器IP:8080`
你应该能看到 Nginx 的欢迎页面。
### 4.2 常用命令速查
```bash
# ========== 容器管理 ==========
# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 停止容器
docker stop 容器名
# 启动已停止的容器
docker start 容器名
# 重启容器
docker restart 容器名
# 删除容器(需先停止)
docker rm 容器名
# 强制删除运行中的容器
docker rm -f 容器名
# 进入容器内部
docker exec -it 容器名 bash
# 查看容器日志(-f 实时跟踪)
docker logs -f 容器名
# ========== 镜像管理 ==========
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull 镜像名:标签
# 查看本地镜像
docker images
# 删除镜像
docker rmi 镜像名
# ========== 清理 ==========
# 清理停止的容器、未使用的镜像和网络
docker system prune -a
```
### 4.3 快速搭建一个数据库
这是学习 Docker 最实用的场景——一行命令起一个数据库:
```bash
# PostgreSQL
docker run -d \
--name my-postgres \
-e POSTGRES_USER=admin \
-e POSTGRES_PASSWORD=your_password \
-e POSTGRES_DB=mydb \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
postgres:16-bookworm
# MySQL
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=mydb \
-p 3306:3306 \
-v mysqldata:/var/lib/mysql \
mysql:8.0
# Redis
docker run -d \
--name my-redis \
-p 6379:6379 \
-v redisdata:/data \
redis:7-alpine
```
关键参数:
- `-e`:设置环境变量(数据库密码等)
- `-v 卷名:容器内路径`:持久化数据,容器删除后数据不丢失
- `postgres:16-bookworm`:镜像名:标签,指定具体版本避免意外升级
---
## 5. 图形化管理 Docker
命令行功能强大,但对于初学者,图形化界面更直观。这里介绍两种方式——Windows 上的 Docker Desktop Dashboard,和云服务器上的 1Panel。
### 5.1 Docker Desktop DashboardWindows 本地)
Docker Desktop 自带了一个图形化管理界面,无需额外安装:
- **打开方式**:右键系统托盘的鲸鱼图标 → 点击 **Dashboard**
- **功能**
- **Containers(容器)**:查看所有容器状态、启停、删除、查看日志、进入终端,全部鼠标点击完成
- **Images(镜像)**:浏览本地镜像、拉取新镜像、删除无用镜像
- **Volumes(数据卷)**:查看和管理持久化数据
- **搜索**:内置 Docker Hub 搜索,找到镜像一键 Pull
对于日常的启停、看日志、删容器等操作,Dashboard 比敲命令方便得多。
### 5.2 1Panel —— 云服务器上的"应用商店"式管理
在云服务器上,没有图形界面可用。但借助 **1Panel** 这类 Linux 服务器管理面板,你可以通过浏览器像操作手机 App 一样管理 Docker。
1Panel 是一个开源的 Linux 服务器运维面板,内置了 Docker 可视化管理功能。笔者的阿里云服务器就在使用它。
**安装 1Panel**(一条命令完成):
```bash
# SSH 登录云服务器后执行
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
```
安装完成后会显示:
```
===============================
1Panel 安装成功!
面板地址: http://你的IP:端口/
用户名: xxxxxx
密码: xxxxxx
===============================
```
> 安装前确保安全组已开放 1Panel 的访问端口(默认是随机端口,安装完成后会显示)。
**用 1Panel 管理 Docker**
登录 1Panel 后,进入 **容器** 菜单:
| 功能 | 说明 |
|------|------|
| **应用商店** | 一键安装 MySQL、Redis、Nginx、WordPress 等 100+ 应用,填写表单即可部署 |
| **容器管理** | 查看启停状态、资源占用、日志、终端,与 Docker Desktop 体验一致 |
| **Compose 模板** | 粘贴 `docker-compose.yaml` 内容,点击部署,无需敲命令 |
| **镜像管理** | 搜索、拉取、删除镜像,支持配置镜像加速 |
| **网络/数据卷** | 可视化创建和管理网络与数据卷 |
**以安装 MySQL 为例**
1. 左侧菜单 → **应用商店**
2. 搜索 "MySQL",点击 **安装**
3. 填写:数据库名、密码、端口(可保持默认 3306),勾选"端口外部访问"
4. 点击 **确认**,等待十几秒即可完成
相比前面 4.3 节一长串的命令行参数,在 1Panel 里填几个表单框就搞定了。
> 笔者的 1Panel 实际配置:面板端口 `21471`,通过 Nginx 反向代理绑定域名,日常管理非常方便。
---
## 6. 下一步学什么?
当你已经能用 `docker run` 熟练启动单个容器后,下一步自然的学习路径:
1. **Docker Compose** —— 用 YAML 文件管理多容器应用,一条命令启动整个项目
2. **Dockerfile** —— 自己编写镜像构建文件,把项目打包成镜像
3. **数据持久化** —— 深入理解 Volume 和 Bind Mount
4. **网络配置** —— 容器间通信、自定义网络
可以参考同一目录下的 [Docker 部署完全指南](./Docker部署完全指南.md) 深入学习后续内容。
---
## 附录:安装问题排查
### 问题一:`docker` 命令提示 "The command 'docker' was not found"
**原因**Docker Desktop 未正确安装或未启动。
**解决**
- 检查系统托盘中 Docker 图标是否存在;如果没有,从开始菜单手动启动 Docker Desktop
- 等待鲸鱼图标停止动画后重试
### 问题二:Docker Desktop 启动后一直转圈(Starting...
**原因**WSL2 未正确安装或版本过旧。
**解决**
```powershell
# 以管理员身份打开 PowerShell
wsl --update
wsl --set-default-version 2
# 重启 Docker Desktop
```
### 问题三:云服务器上访问服务端口失败
**原因**:安全组(防火墙)未开放对应端口。
**解决**:登录云服务器控制台,在安全组中添加入方向规则,开放对应端口。
### 问题四:拉取镜像速度慢
**原因**:Docker Hub 在国内访问较慢。
**解决**:配置国内镜像源。
**云服务器(Linux**
```bash
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}
EOF
sudo systemctl restart docker
```
**Docker DesktopWindows**
打开 Docker Desktop → 右上角齿轮(Settings)→ Docker Engine,将上面的 `registry-mirrors` 配置合并到现有 JSON 中,点击 "Apply & Restart"。
---
*本文由河南理工大学人工智能协会整理*
*2026年5月*
@@ -401,13 +401,13 @@ Git是分布式版本控制系统,这意味着每个开发者的电脑上都
**本地仓库 vs 远程仓库**
| 特性 | 本地仓库 | 远程仓库 |
|------|---------|---------|
| **位置** | 你的电脑 | 服务器(GitHub/Gitee等) |
| **用途** | 日常开发和提交 | 团队共享和备份 |
| **操作** | `git commit` | `git push/pull` |
| **网络要求** | 无需网络 | 需要网络连接 |
| **所有权** | 完全可控 | 团队共享 |
| 特性 | 本地仓库 | 远程仓库 |
| -------- | ------------ | ------------------ |
| **位置** | 你的电脑 | 服务器(GitHub/Gitee等) |
| **用途** | 日常开发和提交 | 团队共享和备份 |
| **操作** | `git commit` | `git push/pull` |
| **网络要求** | 无需网络 | 需要网络连接 |
| **所有权** | 完全可控 | 团队共享 |
**常见的远程仓库服务**