--- 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月*