搭建Docker环境:你的第一台集装箱码头
操作系统选择,其实没那么纠结
很多人问我:“我该用Windows、Mac还是Linux?”
我个人的观点很直接:选你日常开发的操作系统就行。Docker的设计初衷就是跨平台,别为了它专门装个双系统。但不同系统的安装方式确实有区别,我整理了个表给你看。
| 操作系统 | 安装方式 | 核心依赖 | 我踩过的坑 |
|---|---|---|---|
| Windows 10/11 | Docker Desktop 或 WSL2 后端 | WSL2、Hyper-V | Hyper-V与VirtualBox冲突 |
| macOS (Intel) | Docker Desktop | HyperKit | 磁盘镜像文件膨胀 |
| macOS (Apple Silicon) | Docker Desktop (Apple Silicon版) | Rosetta 2 可选 | 部分老镜像兼容问题 |
| Linux | 包管理器安装 docker-ce | cgroups、namespaces | Rootless模式启动失败 |
Linux用户呢?其实更爽。Docker原生跑在Linux内核上,不需要虚拟机层。我基本只用包管理器装docker-ce,省事。
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# CentOS / RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
Docker Desktop vs 纯命令行:选哪个?
这个问题的答案,说白了取决于你愿不愿意看GUI。
Docker Desktop适合刚接触Docker的人,也适合喜欢可视化操作的人。它自带了一个漂亮的Dashboard,可以查看容器、镜像、卷、网络的状态。我刚开始学Docker那会儿,全靠这个Dashboard来理解“容器到底跑没跑起来”。
纯命令行更适合那些追求极致效率的人。比如我,现在基本只用命令行。因为真要搞自动化、写CI/CD脚本、调生产环境,最后还是得用docker命令。
Docker Desktop的优点
- 一键安装,默认配置
- 包含Dashboard、Kubernetes单节点
- 自动更新
- 不用操心后端虚拟化技术
Docker Desktop的槽点
- Windows/Mac上它跑了一个虚拟机,占用资源较高
- 磁盘镜像文件动不动几十GB
- 商业公司要付费
命令行安装的优势
- 只装你需要的组件,轻量
- 完全可脚本化
- 不会自动重启恶心你
Windows上的安装与配置
Windows是比较麻烦的。我踩过最深的坑就是Hyper-V与VirtualBox不兼容。你如果之前装过VirtualBox,那安装Docker Desktop时可能会遇到蓝屏或者无法启动。
推荐安装流程:
- 先开启WSL2(Windows Subsystem for Linux 2)
- 从Docker官网下载Docker Desktop for Windows
- 安装时选择“使用WSL2后端”
- 装完后重启
为什么要用WSL2后端?因为它比Hyper-V更轻量,启动更快,文件共享也更顺畅。
# 检查WSL2是否已启用
wsl --status
# 列出已安装的WSL发行版
wsl --list --verbose
# 如果看不到WSL2,需要手动安装
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
个人习惯:我会在Docker Desktop的设置里把磁盘镜像放在非系统盘。不然C盘分分钟被撑爆。路径一般在 Settings → Resources → Advanced → Disk image location。
注意:Windows版的Docker Desktop默认使用Hyper-V后端。如果你装的Windows是家庭版,可能没有Hyper-V功能。那就必须用WSL2后端了。否则报错“Docker Desktop requires Windows Pro or Enterprise”。
解决方法:
打开PowerShell(管理员),运行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
然后重启,再不行就检查BIOS里的虚拟化是否开启。
macOS上的安装与配置
Mac用户相对幸福,Docker Desktop for Mac装起来基本一路下一步。
# 用Homebrew安装也行,但我个人推荐直接去官网下载
brew install --cask docker
但是,Apple Silicon芯片(M1/M2/M3)的用户要注意:Docker Desktop已经原生支持ARM架构了,但并不是所有镜像都支持ARM架构。你在跑x86_64的镜像时,Docker Desktop会自动用QEMU模拟,性能会差不少。
我记得有一次在M1 Pro上跑一个老项目的基础镜像,结果构建时间比在Intel Mac上慢了3倍。后来我换成了arm64基础镜像,速度才恢复。
解决方案:尽量选择linux/arm64的镜像,或者用--platform参数指定。
# 拉取arm64版本的ubuntu
docker pull --platform linux/arm64 ubuntu:22.04
# 也可以在Dockerfile里声明
FROM --platform=$BUILDPLATFORM ubuntu:22.04
Linux上的安装与配置
Linux上安装Docker更纯粹一些。但有不少细节容易忽略。
# 配置Docker的yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
# 设置开机自启
sudo systemctl enable docker
# 启动Docker
sudo systemctl start docker
技巧:装完Docker后,第一件事不是去拉镜像,而是检查Docker是否正常运行。跑一下:
sudo docker run hello-world
如果看到“Hello from Docker!”,说明环境部署成功了。如果报错“Cannot connect to the Docker daemon”,那大概率是docker服务没启动。
# 检查docker服务状态
sudo systemctl status docker
# 如果没启动,手动启动
sudo systemctl start docker
# 再检查
sudo docker info
避坑指南:我曾经在一台CentOS 7服务器上装Docker,装完后死活跑不起来。找了半天原因,发现是操作系统内核版本太低(3.10),Docker 20.10以上版本要求内核版本至少4.0以上。最后只能升级内核或者降级Docker版本。
安装后的验证与配置
不管你用的是哪个操作系统,装完之后建议做这几件事:
- 检查版本信息
- 测试基本命令
- 配置国内镜像加速(如果在中国大陆)
- 配置非root用户运行
# 查看Docker版本
docker version
docker info
# 测试能不能跑容器
docker run --rm hello-world
# 查看当前镜像列表
docker images
# 查看容器列表
docker ps -a
加速配置:在中国大陆,拉取Docker Hub镜像可能会非常慢。我建议配置镜像加速器。
Windows/Mac用户可以在Docker Desktop的设置Docker Engine里添加:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com"
]
}
Linux用户编辑/etc/docker/daemon.json:
{
"registry-mirrors": ["https://docker.m.daocloud.io"],
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
配置完后重启Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:配置镜像加速后,如果拉取私有仓库的镜像,可能会被镜像加速器缓存。如果你有私有仓库,建议在配置中排除掉它们。
Docker Desktop vs 命令行:我什么时候用谁
看了上面的对比,你可能更纠结了。我列个实际场景,你看哪个更适合你。
- 只想快速体验Docker:用Docker Desktop,装完就跑
- 正在写Dockerfile做调试:用命令行,因为频繁构建、删除操作,Desktop的GUI太慢
- 本地开发环境管理:用Docker Desktop的Dashboard,一目了然
- CI/CD脚本里:只能用命令行
- 生产环境:纯命令行,不能装Desktop
- 团队协作教学:Desktop更友好,可以展示容器状态
你想想看,一个技术你如果在生产环境里根本见不到桌面,那学它就不要依赖GUI。我个人建议:先用Docker Desktop入门,然后尽快切换到命令行。你早晚得面对终端。
我的建议:如果你问我,我会直接推荐Linux + 命令行。没有虚拟机开销,没有Hyper-V冲突,磁盘管理也简单。但如果你是Windows或者Mac用户,也别慌。Docker Desktop已经足够成熟了。只要别让它吃光你硬盘就行。
本章小结
至此,Docker环境搭建完成。你已经在Windows、Mac或者Linux上装好了Docker引擎,也知道Docker Desktop和纯命令行的优缺点。配置了镜像加速,也做了基本的验证。
接下来,我会在之后的章节里带你一个个拆解这些模块。比如怎么拉镜像、怎么启动容器、怎么配网络。这些内容才是真正生产中用得上的东西。