Docker 环境安装
学 Docker 的第一步是把环境装好。Docker 原生只支持 Linux(因为它依赖 Linux 内核的 cgroups 和 namespaces),但通过内置一个轻量级 Linux 虚拟机,在 macOS 和 Windows 上也能用得很舒服。本章带你三大平台通吃,顺便跑起第一个容器。
两种安装方式:Desktop vs Engine
先弄清两个名词,后面才不混乱:
- Docker Desktop:面向个人开发的图形客户端,内置一个 Linux 虚拟机(macOS/Windows)或直接用宿主内核(Linux)。装一个就能用 Docker CLI、Compose、Build Kit 全套。免费但有商业限制(员工 250 人以上企业需付费)。
- Docker Engine:纯粹的守护进程 + CLI,只在 Linux 上原生跑。轻量、免费、性能最好,服务器首选。
简单记:个人 Mac/Win 开发用 Desktop;Linux 服务器用 Engine。两者命令完全一样。
macOS 与 Windows:装 Docker Desktop
# macOS / Windows:装 Docker Desktop(图形客户端 + 内置 Linux 虚拟机)
# macOS
# 1. 访问 https://www.docker.com/products/docker-desktop/
# 2. 下载 Docker.dmg(Intel 芯片选 Intel,Apple M 系列选 Apple Silicon)
# 3. 拖进 Applications,启动 Docker.app
# 4. 等状态栏鲸鱼图标变成稳定状态,终端就能用 docker 命令了
# Windows
# 1. 同样下载 Docker Desktop Installer.exe
# 2. 前置条件:Win10/11 64位 + 启用 WSL 2(推荐)或 Hyper-V
# 3. 安装时勾选 "Use WSL 2 instead of Hyper-V"
# 4. 重启后启动 Docker Desktop
# Docker Desktop 自带:
# - Docker Engine(守护进程)
# - Docker CLI(命令行)
# - Docker Compose / Build Kit
# - 图形界面管理镜像和容器Apple Silicon(M1/M2/M3)用户注意:Docker Desktop 默认用 ARM 架构的镜像,跑 x86 镜像会通过 QEMU 转译,性能下降。一般官方镜像都有 arm64 版本(如 node:20-alpine),尽量用原生 ARM 镜像。
Linux:装 Docker Engine
# Linux:装 Docker Engine(原生,无虚拟机层,性能最好)
# Ubuntu / Debian 一键安装(官方脚本)
curl -fsSL https://get.docker.com | sudo sh
# 或者用 apt 手动装(以 Ubuntu 为例)
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
# 把当前用户加入 docker 组,免去每次 sudo
sudo usermod -aG docker $USER
newgrp docker # 立即生效(或重新登录)
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# CentOS / RHEL / Fedora 用 yum 或 dnf
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.ioUbuntu 用 apt、CentOS 用 yum,命令略有不同但思路一致。装完务必执行 sudo usermod -aG docker $USER,否则每次跑 docker 都要加 sudo,很烦。newgrp docker 让组权限立即生效,不用重新登录。
验证安装
装完后跑下面三步,全部通过说明 Docker 工作正常:
# 安装完成后,在终端验证三步
# 1. 看版本:能打印 client 和 server 版本就说明装好了
docker --version
# Docker version 24.0.7, build afdd53b
# 2. 看详细信息:运行时、存储驱动、镜像数量等
docker info
# 3. 跑官方测试镜像(会自动下载并打印一段话)
docker run hello-world
# 输出关键句: Hello from Docker!
# This message shows that your installation appears to be working correctly.如果 docker info 报错 "Cannot connect to the Docker daemon",说明守护进程没起来:Linux 检查 systemctl status docker,Mac/Win 检查 Docker Desktop 是否在运行。
配置国内镜像加速器(强烈推荐)
Docker Hub 服务器在国外,国内直连拉镜像慢得让人想砸键盘。配置一个或多个国内镜像加速器,下载速度能从几十 KB/s 飙到几十 MB/s:
# 国内网络直连 Docker Hub 很慢,建议配置镜像加速器
# Linux:编辑 /etc/docker/daemon.json
# macOS / Windows:Docker Desktop → Settings → Docker Engine
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn"
]
}
# 改完必须重启 Docker 才生效
# Linux
sudo systemctl restart docker
# macOS / Windows:在 Docker Desktop 里点 Restart
# 验证加速器是否生效
docker info | grep -A 5 "Registry Mirrors"加速器地址会变动,上面的几个如果失效,搜"docker 镜像加速器 2024"找最新的。配置文件是 JSON 格式,语法严格:键和字符串必须用双引号,最后一项不能有逗号。
第一个实战:跑一个 Nginx
装好了加速器,来跑个看得见摸得着的东西——一个完整的 Web 服务器:
# 第一个实战容器:跑一个 Nginx Web 服务器
# 1. 拉取官方镜像(指定版本,别用 latest)
docker pull nginx:1.25-alpine
# 2. 后台运行,把主机 8080 端口映射到容器 80 端口
docker run -d --name web -p 8080:80 nginx:1.25-alpine
# 返回一长串容器 ID,说明启动成功
# 3. 浏览器访问 http://localhost:8080 看到 Nginx 欢迎页
# 或命令行验证
curl http://localhost:8080
# 4. 看运行状态
docker ps
# 5. 看日志(实时跟随)
docker logs -f web
# 6. 进入容器开个 shell
docker exec -it web sh
# 7. 停止、删除(清理战场)
docker stop web
docker rm web几个高频参数解释一下:
-d:detach,后台运行(否则终端关掉容器就停)。--name web:给容器起名,不写会随机生成(如clever_bassi)。-p 8080:80:端口映射,主机端口比作门牌号、容器端口比作房间号。访问主机 8080,Docker 转发到容器 80。-it:interactive + tty,进入容器开交互式终端时必备,通常配合exec用。
看到 Nginx 欢迎页那一刻,恭喜——你已经成功用了 Docker!下一章我们系统学镜像相关命令。
常见问题
- permission denied:Linux 下没加用户组,跑
sudo usermod -aG docker $USER后重新登录。 - 磁盘爆满:Docker 镜像和容器都占空间,定期
docker system prune -a清理无用数据(慎用,会删掉所有未使用的镜像)。 - 端口冲突:"port is already allocated" 说明主机端口被占。换个端口(如
-p 9080:80)或停掉占用程序。 - WSL 2 没装:Windows 用户按提示装 WSL 2(
wsl --install),再启动 Docker Desktop。
← 上一篇 Docker 简介
下一篇 Docker 镜像 →