WSL2 跑 Docker,顺手装了 Immich
最近折腾了一下在 Windows 上用 WSL2 跑 Docker,全程不依赖 Docker Desktop 或任何桌面端工具,纯命令行完成。顺带把 Immich 私有相册也部署起来了。这篇文章记录完整过程,适合第一次上手的朋友参考。
为什么不用 Docker Desktop
Section titled “为什么不用 Docker Desktop”Docker Desktop 本身没什么问题,但它是 GUI 应用,占资源,而且商业使用需要付费授权。WSL2 里直接跑 Docker Engine 更轻量,和 Linux 原生体验几乎一致,也更适合服务器思维的使用方式。
一、安装 WSL2 并把 Ubuntu 装到 D 盘
Section titled “一、安装 WSL2 并把 Ubuntu 装到 D 盘”默认情况下,WSL 会把发行版装在 C 盘。如果你的 C 盘空间有限,可以在安装时直接指定路径。
以管理员身份打开 PowerShell,执行:
wsl --install Ubuntu --web-download --location "D:\WSL\Ubuntu"如果网络不好导致下载失败,可以手动下载安装包再安装:
Invoke-WebRequest -Uri https://aka.ms/wslubuntu -OutFile Ubuntu.appxAdd-AppxPackage .\Ubuntu.appxwsl --install Ubuntu --location "D:\WSL\Ubuntu"安装完成后会自动进入 Ubuntu 初始化界面,按提示创建用户名和密码。输密码时屏幕不会有任何显示,这是正常的,直接输入按 Enter 就好。
二、基础系统配置
Section titled “二、基础系统配置”进入 Ubuntu 后先更新软件包,再装几个常用工具:
sudo apt update && sudo apt upgrade -ysudo apt install -y curl wget git vim build-essential net-tools顺手把默认目录设到家目录,避免每次打开都在根目录:
cd ~echo "cd ~" >> ~/.bashrcsource ~/.bashrc三、安装 Docker Engine
Section titled “三、安装 Docker Engine”WSL2 环境下按照 Docker 官方方式安装 Docker Engine,不需要 Docker Desktop。
# 先卸载可能存在的旧版本for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkgdone
# 添加 Docker 官方 GPG 密钥和软件源sudo apt update && sudo apt install -y ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Dockersudo apt update && sudo apt install -y \ docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin
# 把当前用户加入 docker 组,避免每次都要 sudosudo usermod -aG docker $USER重新登录(或执行 newgrp docker)后,测试是否安装成功:
docker run hello-world设置 Docker 开机自启动:
sudo systemctl enable --now docker四、配置国内镜像加速
Section titled “四、配置国内镜像加速”Docker Hub 在国内访问速度很慢,甚至经常超时。可以配置镜像加速器来解决这个问题。
编辑(或新建)Docker 的 daemon 配置文件:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<EOF{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://mirror.baidubce.com" ]}EOF重启 Docker 使配置生效:
sudo systemctl daemon-reloadsudo systemctl restart docker验证镜像加速是否生效:
docker info | grep -A 5 "Registry Mirrors"说明: 国内镜像加速节点时效性较短,若某个地址失效,可以替换为其他可用节点。DaoCloud 和百度云目前稳定性相对较好。
五、部署 Immich 私有相册
Section titled “五、部署 Immich 私有相册”Immich 是一个开源的自托管相册方案,功能对标 Google Photos:自动备份、人脸识别、地图视图、时间线浏览一应俱全,而且数据完全在自己手里。
1. 创建目录并下载配置文件
Section titled “1. 创建目录并下载配置文件”mkdir -p ~/immich && cd ~/immich
# 下载官方 docker-compose 配置wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.ymlwget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env2. 修改环境变量
Section titled “2. 修改环境变量”用 vim 或 nano 打开 .env 文件,修改以下两项:
vim .env关键配置项:
# 相册数据存储路径,改成你想要的目录UPLOAD_LOCATION=./library
# 数据库密码,建议改成一个强密码DB_PASSWORD=your_strong_password_here如果你想把照片存在 Windows 的某个盘(比如 H 盘),可以这样设置路径:
UPLOAD_LOCATION=/mnt/h/ImmichLibraryWSL2 会自动把 Windows 的 H 盘挂载到 /mnt/h。
3. 启动 Immich
Section titled “3. 启动 Immich”docker compose up -d第一次启动会拉取多个镜像,国内环境配好加速后一般 5-10 分钟内完成。
4. 访问 Web 界面
Section titled “4. 访问 Web 界面”启动成功后,在 Windows 浏览器中访问:
http://localhost:2283第一次访问需要注册管理员账号。注册完成后就可以开始使用了。
5. 常用管理命令
Section titled “5. 常用管理命令”# 查看运行状态docker compose ps
# 查看日志docker compose logs -f
# 停止服务docker compose down
# 更新到最新版本docker compose pull && docker compose up -d六、一些使用注意事项
Section titled “六、一些使用注意事项”存储位置: Ubuntu 系统文件和通过 apt 安装的软件都在 D:\WSL\Ubuntu 下,不占 C 盘空间。
访问 Windows 文件: 在 Ubuntu 中,C:\ 对应 /mnt/c/,D:\ 对应 /mnt/d/,以此类推。
WSL 常用命令(在 PowerShell 里执行):
wsl --list --verbose # 查看已安装的发行版和状态wsl --shutdown # 关闭所有 WSL 实例资源占用: Immich 空闲时内存占用约 500MB-1GB,主要是数据库和机器学习服务。如果机器内存紧张,可以在 .env 中禁用机器学习功能(会失去人脸识别和智能搜索)。
手机端备份: Immich 有官方 iOS 和 Android 客户端,设置服务器地址为 http://[你的Windows内网IP]:2283 即可自动备份手机相册。查看 Windows 内网 IP 可以在 PowerShell 里执行 ipconfig。
第一次搭 WSL2 + Docker 的组合,整个过程下来比预想的顺利很多。没有桌面端的加持反而让整个环境更干净,理解也更深。Immich 的体验也超出预期,推荐有私有部署需求的朋友试试。