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:
@@ -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 LTS(64 位) |
|
||||
| **系统盘** | 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 开发 |
|
||||
|
||||
> ⚠️ 不要开放 22(SSH)的源 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 Dashboard(Windows 本地)
|
||||
|
||||
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 Desktop(Windows)**:
|
||||
|
||||
打开 Docker Desktop → 右上角齿轮(Settings)→ Docker Engine,将上面的 `registry-mirrors` 配置合并到现有 JSON 中,点击 "Apply & Restart"。
|
||||
|
||||
---
|
||||
|
||||
*本文由河南理工大学人工智能协会整理*
|
||||
*2026年5月*
|
||||
Reference in New Issue
Block a user