目录

一、系统与硬件要求

1. 1、系统版本

1.2、 硬件要求

1.3、 检查虚拟化是否开启

二、开启支持WSL

方法 1:PowerShell 自动安装

方法 2:手动启用

三、下载 Docker Desktop

四、安装 Docker Desktop

五、首次启动与初始化

六、验证安装

1. 查看版本

2. 测试容器

七、必做优化(解决 C 盘爆满 / 下载慢)

1. 更换镜像存储位置(防 C 盘红)

2. 配置国内镜像加速(解决拉取超时)

八、常见问题

1. WSL2 安装失败

2. 启动报错 “虚拟化未开启”

3. 家庭版用户

九、常用命令

十、针对Windows 10 专业版低系统版本的docker

10.1.、开启 Hyper-V(专业版专属)

10.2.、确认 BIOS 开启虚拟化

10.3、下载适配版 Docker Desktop

10.4、安装步骤(关键设置)

10.5、首次启动与验证

10.6、常见问题(21H1 专属)

1. 启动报错 Windows version is incompatible

2. WSL 2 错误(wsl not found)

3. 镜像拉取慢

10.7、总结(21H1 必看)

十一、Docker命令使用说明

11.1、Docker 基础信息命令

11.2、Docker 镜像(Image)命令

1. 搜索镜像

2. 下载(拉取)镜像

3. 查看本地所有镜像

4. 删除本地镜像

5. 查看镜像详情

6. 给镜像打标签

7. 推送到镜像仓库(Docker Hub / 私有仓库)

8. 登录 / 登出仓库

9. 导出镜像(保存成本地文件)

10. 导入本地镜像文件

11. 查看镜像构建历史

11.3、Docker 容器(Container)命令

1. 创建并启动容器(最核心命令:docker run)

常用 run 示例

2. 查看容器

3. 进入运行中的容器

4. 启动 / 停止 / 重启容器

5. 删除容器

6. 查看容器日志

7. 复制文件(宿主机 ↔ 容器)

8. 暂停 / 恢复容器

9. 重命名容器

10. 查看容器内文件变化(对比原始镜像)

11. 等待容器停止(阻塞直到容器停)

11.4、数据卷(Volume)命令

11.5、网络(Network)命令

11.5.1. 容器连接 / 断开网络

11.5.2. 清理无用网络

11.6、Docker 系统清理命令

11.7、Docker Compose 常用命令(必备)

11.7.1、基础核心命令(最常用)

11.7.2、构建与更新命令

11.7.3、查看与管理命令

11.7.4、删除与清理命令

11.7.5、补充

11.7.6、高频实用命令

1.最常用组合(开发必备)

2. 调试命令

3. 批量更新服务

11.8、系统 & 其他(补充)

1. 实时查看事件(docker 运行日志)

2. 挂载本地文件 / 目录并临时运行容器(常用调试)

11.9、运行实例

1. 运行 Nginx 网页服务器

2. 运行 MySQL 数据库

十二、通过wsl2安装最新版Docker Engine(无桌面)

12.1、开启支持WSL

12.2、确认 WSL 版本

12.3、安装wsl(ubuntu)

12.4、WSL Ubuntu 装 Docker Engine

12.4.1、进入 Ubuntu

12.4.2、 一键安装 Docker 官方源与服务

12.4.3、 免 sudo 操作 docker

12.4.4、 开启 systemd,设置 Docker 开机自启

12.4.4.1、不用 systemd,直接启动 Docker

 手动启动 Docker 服务

配置每次打开 WSL 自动启动 Docker(免手动输命令)

12.4.5、Windows 终端调用 docker(可选)

如果遇到下列问题:

报错根因

步骤 1:手动前台启动 dockerd,看完整报错

步骤 2:后台正常启动 docker 服务

步骤 3:验证 sock 文件存在

12.4.6、查看docker状态

12.4.6.1、关闭 Docker 内置 iptables 网络规则

创建 / 修改 docker 守护进程配置

写入完整内容:

杀掉残留 dockerd 进程 新开一个 WSL 窗口执行:

前台启动 dockerd 验证是否正常

后台常驻启动 docker 关闭前台 dockerd(Ctrl+C),执行:

测试运行容器

12.4.7、命令更换 docker 镜像源

 编辑 daemon.json(合并已有配置,不要覆盖)

重启 Docker 服务生效

验证镜像源是否配置成功

一键拉取测试镜像验证速度

12.4.8、VSCode远程连接WSL

总结


Windows 安装 Docker 核心是 Docker Desktop + WSL2(推荐),家庭版 / 专业版通用,性能好、最稳定,下面是详细步骤。

一、系统与硬件要求

1. 1、系统版本

  • Windows 10 64 位:家庭 / 专业 / 企业 22H2(Build 19045+)
  • Windows 11 64 位:全版本(家庭 / 专业 / 企业)

如果系统版本不够安装会报错

这时候需要升级系统版本安装 Docker Desktop 4.23.0 或更早版本,并使用 Hyper-V 后端(避开新版 WSL 2 内核不兼容问题)。

直接看: 十、针对Windows 10 专业版低系统版本的docker

但是这样安装的是老版本的docker,一些项目是和docker版本深度绑定的(例如dify),老版本docker会限制项目的更新,那要怎么办?如何在windows系统版本限制下安装最新版docker?请参考:十二、通过wsl2安装最新版Docker Engine(无桌面)

1.2、 硬件要求

  • CPU:64 位、支持 Intel VT-x / AMD-V 虚拟化(必须在 BIOS 开启)
  • 内存:≥4GB(推荐 8GB+)
  • 硬盘:SSD 优先,C 盘至少20GB + 空闲

1.3、 检查虚拟化是否开启

  • 任务管理器 → 性能 → CPU:查看 虚拟化:已启用

  • 若显示 “已禁用”:重启电脑按 Del/F2/F10 进 BIOS,开启 Intel Virtual Technology (VT-x)AMD-V,保存重启。

二、开启支持WSL

WSL2 = Windows Linux 子系统,Docker 推荐后端,家庭版必装、专业版推荐。

方法 1:PowerShell 自动安装

  • 管理员身份打开 PowerShell
  • 执行命令:
wsl --install
  • 自动安装:WSL 内核 + Ubuntu(默认)
  • 安装完成 重启电脑

如果这一步失败,返回信息,就像下面这样,就使用方法 2:

方法 2:手动启用

控制面板 → 程序 → 启用或关闭 Windows 功能

勾选:

  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

确定 → 重启电脑


三、下载 Docker Desktop


四、安装 Docker Desktop

  1. 双击 Docker Desktop Installer.exe → 用户账户控制点

  2. 配置页面(关键勾选):

    • Use WSL 2 instead of Hyper-V(选,性能好)
    • Add shortcut to desktop(添加桌面图标)
    • 点击 OK → 等待安装(5–10 分钟)

    • 安装完成 → 勾选 Close and restart立即重启电脑


五、首次启动与初始化

  1. 重启后,桌面双击 Docker Desktop 图标
  2. 服务协议 → 点 Accept
  3. 登录 / 跳过:
    • 有 Docker 账号:登录
    • 无账号:点 Skip 跳过(不影响使用)
  4. 等待启动:
    • 任务栏出现鲸鱼图标
    • 提示 Docker Desktop is running 即成功

六、验证安装

打开 PowerShell 或 CMD,依次执行:

1. 查看版本

powershell

docker --version
# 输出:Docker version 26.x.x, build xxx

2. 测试容器

powershell

docker run hello-world

出现 Hello from Docker! 即安装完全成功。


七、必做优化(解决 C 盘爆满 / 下载慢)

1. 更换镜像存储位置(防 C 盘红)

  1. Docker → 右上角 Settings(齿轮)
  2. Resources → Advanced
  3. Disk image location → 点 Browse 选 D/E/F 盘文件夹(如 E:\Docker\wsl
  4. Apply & Restart → 等待迁移完成

2. 配置国内镜像加速(解决拉取超时)

  • Settings → Docker Engine
  • 在 JSON 中添加 registry-mirrors
{
  "registry-mirrors": [
    "https://docker.1panelproxy.com",
    "https://docker.m.daocloud.io",
    "https://docker.registry.cyou",
    "https://docker.jsdelivr.fyi",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.rainbond.cc",
    "https://dockerhub.icu",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://mirror.iscas.ac.cn",
    "https://mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://your_preferred_mirror",
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com"
  ],
  "features": {
    "buildkit": true
  }
}
  • Apply & Restart 生效

八、常见问题

1. WSL2 安装失败

  • 执行:
wsl --update
wsl --set-default-version 2
  • 重启电脑再启动 Docker

2. 启动报错 “虚拟化未开启”

  • 进 BIOS 开启 VT-x / AMD-V
  • Windows 功能:开启 虚拟机平台

3. 家庭版用户

  • 必须用 WSL2,不能用 Hyper-V
  • 按上面步骤安装 WSL2 即可


九、常用命令

# 查看版本
docker --version
docker-compose --version

# 查看运行容器
docker ps

# 测试hello-world
docker run hello-world

# 启动/停止Docker
# 桌面点图标启停

十、针对Windows 10 专业版低系统版本的docker

推荐Docker Desktop 4.23.0(稳定、兼容 21H1,支持 Hyper-V)

10.1.、开启 Hyper-V(专业版专属)

  • 控制面板 → 程序 → 启用或关闭 Windows 功能

  • 勾选:

    • Hyper-V(全部子项)
    • 虚拟机平台
    • 适用于 Linux 的 Windows 子系统(可选备用)
  •         
  • 确定 → 重启电脑

10.2.、确认 BIOS 开启虚拟化

  • 任务管理器 → 性能 → CPU:虚拟化:已启用

10.3、下载适配版 Docker Desktop

官方历史版下载(4.23.0):

https://docs.docker.com/desktop/release-notes/#4230(下拉找到 Docker Desktop 4.23.0Download for Windows

网盘下载:

Windows的Docker Desktop4.X系列
链接: 

https://pan.baidu.com/s/1450isx-01lTJrBUjpueubg

提取码:

k7rj 

10.4、安装步骤(关键设置)

  1. 管理员身份运行 Docker Desktop Installer.exe
  2. Configuration 页面(必选)
    • 取消勾选Use WSL 2 instead of Hyper-V(❌ 不选 WSL2)
    • 勾选Add shortcut to desktop

     

  1. 点击 OK → 等待安装
  2. 安装完成 → 重启电脑

10.5、首次启动与验证

  1. 启动 Docker Desktop(桌面图标)
  2. 接受协议 → 跳过登录
  3. 等待启动(任务栏鲸鱼图标)
  4. 验证(PowerShell)
    docker --version
    # 输出 Docker version 24.0.4 (对应 4.23.0)
    
    docker run hello-world
    # 出现 Hello from Docker! 即成功
    

10.6、常见问题(21H1 专属)

1. 启动报错 Windows version is incompatible

  • 原因:装了新版 Docker (≥4.24.0)
  • 解决:卸载 → 安装 4.23.0 版

2. WSL 2 错误(wsl not found

  • 解决
    1. Docker → Settings → General
    2. 勾选 Use Hyper-V (recommended)
    3. Apply & Restart

3. 镜像拉取慢

  • 添加国内镜像(Settings → Docker Engine):
{
  "registry-mirrors": [
    "https://docker.1panelproxy.com",
    "https://docker.m.daocloud.io",
    "https://docker.registry.cyou",
    "https://docker.jsdelivr.fyi",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.rainbond.cc",
    "https://dockerhub.icu",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://mirror.iscas.ac.cn",
    "https://mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://your_preferred_mirror",
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com"
  ]
}

10.7、总结(21H1 必看)

  • 最佳版本Docker Desktop 4.23.0
  • 必选后端Hyper-V(不要用 WSL2)
  • 核心步骤:开启 Hyper-V → 装 4.23.0 → 选 Hyper-V 引擎

十一、Docker命令使用说明

11.1、Docker 基础信息命令

# 查看 Docker 版本
docker --version

# 查看 Docker 详细信息(版本、镜像数、容器数)
docker info

# 查看命令帮助(比如查看 run 命令用法)
docker run --help

11.2、Docker 镜像(Image)命令

镜像 = 软件安装包(包含程序 + 环境)

1. 搜索镜像

# 从 Docker Hub 搜索镜像
docker search 镜像名

# 示例:搜索 Nginx 镜像
docker search nginx

2. 下载(拉取)镜像

# 格式:docker pull 镜像名[:标签],默认 latest 最新版
docker pull 镜像名

# 示例 1:下载最新版 Nginx
docker pull nginx

# 示例 2:下载指定版本 MySQL 8.0
docker pull mysql:8.0

3. 查看本地所有镜像

docker images
# 或简写
docker image ls

4. 删除本地镜像

# 格式:docker rmi 镜像ID / 镜像名
docker rmi 镜像名/镜像ID

# 示例 1:按名称删除 Nginx
docker rmi nginx

# 示例 2:按 ID 删除镜像(ID 只需输入前 3 位即可)
docker rmi a1b

5. 查看镜像详情

docker inspect 镜像名/ID

6. 给镜像打标签

docker tag 原镜像名:标签 新镜像名:标签

7. 推送到镜像仓库(Docker Hub / 私有仓库)

docker push 用户名/镜像名:标签

8. 登录 / 登出仓库

docker login
docker logout

9. 导出镜像(保存成本地文件)

docker save -o 文件名.tar 镜像名:标签

10. 导入本地镜像文件

docker load -i 文件名.tar

11. 查看镜像构建历史

docker history 镜像名/ID

11.3、Docker 容器(Container)命令

容器 = 镜像运行后的实例(相当于运行中的软件)

1. 创建并启动容器(最核心命令:docker run)

# 基础格式
docker run [参数] 镜像名

# 常用参数:
# -d :后台运行
# -p 宿主机端口:容器端口 :端口映射
# --name :给容器起名字
# -v 宿主机目录:容器目录 :数据挂载(数据持久化)
# -e :设置环境变量(如密码)
# --restart=always :开机自启
常用 run 示例
# 示例 1:启动 Nginx(后台运行 + 端口映射)
docker run -d -p 80:80 --name mynginx nginx

# 示例 2:启动 MySQL 8.0(设置密码 + 数据持久化 + 自启)
docker run -d \
  -p 3306:3306 \
  --name mysql8 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v /mydata/mysql:/var/lib/mysql \
  --restart=always \
  mysql:8.0

# 示例 3:启动 Redis(带密码)
docker run -d -p 6379:6379 --name myredis redis redis-server --requirepass 123456

2. 查看容器

# 查看正在运行的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 查看容器资源占用(CPU、内存)
docker stats

3. 进入运行中的容器

# 标准进入方式(推荐)
docker exec -it 容器名/容器ID /bin/bash

# 示例:进入 Nginx 容器
docker exec -it mynginx /bin/bash

# 退出容器(不停止容器)
exit

4. 启动 / 停止 / 重启容器

# 停止容器
docker stop 容器名/ID

# 启动已停止的容器
docker start 容器名/ID

# 重启容器
docker restart 容器名/ID

# 示例:停止 mynginx
docker stop mynginx

5. 删除容器

# 删除已停止的容器
docker rm 容器名/ID

# 强制删除运行中的容器(不推荐)
docker rm -f 容器名/ID

# 示例:删除 mynginx
docker rm mynginx

6. 查看容器日志

# 查看日志
docker logs 容器名/ID

# 实时查看日志(持续刷新)
docker logs -f 容器名/ID

# 示例:查看 Nginx 日志
docker logs -f mynginx

7. 复制文件(宿主机 ↔ 容器)

# 从容器复制文件到宿主机
docker cp 容器名:容器路径 宿主机路径

# 示例:把 Nginx 配置文件复制到本地
docker cp mynginx:/etc/nginx/nginx.conf /home/

8. 暂停 / 恢复容器

docker pause 容器名/ID
docker unpause 容器名/ID

9. 重命名容器

docker rename 旧名 新名

10. 查看容器内文件变化(对比原始镜像)

docker diff 容器名/ID

11. 等待容器停止(阻塞直到容器停)

docker wait 容器名/ID

11.4、数据卷(Volume)命令

用于数据持久化,防止容器删除后数据丢失

# 创建数据卷
docker volume create myvolume

# 查看所有数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect myvolume

# 删除无用数据卷
docker volume prune

# 删除指定数据卷
docker volume rm 卷名

11.5、网络(Network)命令

# 查看所有网络
docker network ls

# 创建自定义网络
docker network create mynet

# 删除网络
docker network rm mynet

11.5.1. 容器连接 / 断开网络

docker network connect 网络名 容器名
docker network disconnect 网络名 容器名

11.5.2. 清理无用网络

docker network prune

11.6、Docker 系统清理命令

# 查看 Docker 占用空间
docker system df

# 清理停止的容器、无用镜像、缓存(安全清理)
docker system prune

# 强制清理所有无用资源(慎用!会删除未使用的镜像)
docker system prune -a

11.7、Docker Compose 常用命令(必备)

用于一键启动多个容器(如 Nginx + MySQL + Redis)

docker-compose

旧版独立工具(Python 编写)|    需要单独安装 docker-compose 二进制文件|已废弃,不再维护|仅支持老版本 Docker

docker compose

Docker 官方内置插件(Go 编写)|安装 Docker Desktop 后自带,无需额外安装|官方推荐,持续更新|支持所有新版 Docker 功能

11.7.1、基础核心命令(最常用)

作用 旧版(docker-compose) 新版(docker compose)
启动服务(前台) docker-compose up docker compose up
启动服务(后台守护进程) docker-compose up -d docker compose up -d
停止并删除容器 / 网络 docker-compose down docker compose down
停止服务(不删除容器) docker-compose stop docker compose stop
启动已停止的服务 docker-compose start docker compose start
重启服务 docker-compose restart docker compose restart
查看服务日志 docker-compose logs docker compose logs
实时查看日志 docker-compose logs -f docker compose logs -f

11.7.2、构建与更新命令

作用 旧版 新版
构建镜像并启动 docker-compose up --build docker compose up --build
仅构建镜像(不启动) docker-compose build docker compose build
拉取最新镜像 docker-compose pull docker compose pull
强制重新创建容器 docker-compose up --force-recreate docker compose up --force-recreate

11.7.3、查看与管理命令

作用 旧版 新版
查看运行中的服务 docker-compose ps docker compose ps
查看所有容器(含停止) docker-compose ps -a docker compose ps -a
进入容器终端 docker-compose exec 服务名 bash docker compose exec 服务名 bash
查看服务进程 docker-compose top docker compose top
验证配置文件语法 docker-compose config docker compose config
查看配置文件详情 docker-compose config -q docker compose config -q

11.7.4、删除与清理命令

作用 旧版 新版
删除停止的容器 docker-compose rm docker compose rm
停止 + 删除 + 删除镜像 docker-compose down --rmi all docker compose down --rmi all
删除 + 删除数据卷 docker-compose down -v docker compose down -v

11.7.5、补充

# 查看服务依赖/启动顺序
docker compose ps --all

# 只重启某个服务
docker compose restart 服务名

# 构建但不启动
docker compose build

# 拉取镜像但不启动
docker compose pull

# 检查配置文件是否正确
docker compose config -q

11.7.6、高频实用命令

1.最常用组合(开发必备)
# 后台启动,有修改就重新构建镜像
docker compose up -d --build

# 停止并删除所有资源(保留数据卷)
docker compose down

# 停止并删除所有资源(连数据一起清空)
docker compose down -v
2. 调试命令
# 实时查看所有日志
docker compose logs -f

# 查看单个服务日志
docker compose logs -f 服务名

# 进入容器内部
docker compose exec 服务名 sh
3. 批量更新服务
# 拉取最新镜像 → 重启服务
docker compose pull && docker compose up -d

11.8、系统 & 其他(补充)

1. 实时查看事件(docker 运行日志)

docker events

2. 挂载本地文件 / 目录并临时运行容器(常用调试)

docker run --rm -v 本地目录:容器目录 镜像 命令

--rm:退出即删除容器,非常干净。

11.9、运行实例

1. 运行 Nginx 网页服务器

docker run -d -p 80:80 --name mynginx nginx

访问:服务器IP 即可看到 Nginx 欢迎页

2. 运行 MySQL 数据库

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

连接信息:IP:3306,账号 root,密码 123456


十二、通过wsl2安装最新版Docker Engine(无桌面)

12.1、开启支持WSL

 控制面板 → 程序 → 启用或关闭 Windows 功能

勾选:

  • 适用于 Linux 的 Windows 子系统
  • 虚拟机平台

确定 → 重启电脑

12.2、确认 WSL 版本

在 PowerShell 中执行

wsl -l -v

这个命令会列出所有已安装的 Linux 发行版及其 WSL 版本(1 或 2)。如果命令能成功执行,说明 WSL 功能已启用。

上面是我已经安装了linux发行版,你们应该没东西。

会提示:

C:\Users\Administrator> wsl -l -v 适用于 Linux 的 Windows 子系统没有已安装的分发版。 可以通过访问 Microsoft Store 来安装分发版: https://aka.ms/wslstore

不要用--version,如果当前使用的 WSL 版本比较旧,是不支持 --version 这个参数的

12.3、安装wsl(ubuntu)

新版wsl自动安装:安装 WSL | Microsoft Learn

旧版wsl手动安装:旧版 WSL 的手动安装步骤 | Microsoft Learn

安装完后在执行wsl -l -v查看,应该就能看到:

12.4、WSL Ubuntu 装 Docker Engine

12.4.1、进入 Ubuntu

wsl

12.4.2、 一键安装 Docker 官方源与服务

sudo apt update && sudo apt install ca-certificates curl gnupg lsb-release -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.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 docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

12.4.3、 免 sudo 操作 docker

sudo usermod -aG docker $USER
newgrp docker

12.4.4、 开启 systemd,设置 Docker 开机自启

编辑 wsl 配置:

sudo nano /etc/wsl.conf

写入:

[boot]
systemd=true

保存退出 Ctrl+O → 回车 → Ctrl+X

关闭重启 WSL:

wsl --shutdown
wsl

设置开机自启:

sudo systemctl enable --now docker

测试:

docker run hello-world

输出成功提示即代表 WSL 内 Docker 可用。

如果报错:

Synchronizing state of docker.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable docker System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down

12.4.4.1、不用 systemd,直接启动 Docker
 手动启动 Docker 服务
sudo service docker start

查看状态:

sudo service docker status
配置每次打开 WSL 自动启动 Docker(免手动输命令)

把启动脚本写入 bashrc,登录自动执行:

echo 'if ! pgrep dockerd >/dev/null; then sudo service docker start; fi' >> ~/.bashrc
source ~/.bashrc

12.4.5、Windows 终端调用 docker(可选)

PowerShell 执行永久配置:

[Environment]::SetEnvironmentVariable("DOCKER_HOST", "unix://\\wsl$\Ubuntu-24.04\var\run\docker.sock", "User")

重启终端后,CMD/PowerShell 直接用 docker psdocker compose

如果遇到下列问题:

failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory

报错根因

/var/run/docker.sock 套接字文件不存在,代表 dockerd 没正常启动、进程异常退出,按下面顺序一步步修复:

步骤 1:手动前台启动 dockerd,看完整报错

先杀掉残留进程

sudo pkill dockerd
sudo rm -rf /var/run/docker.sock
# 前台运行,看启动日志
sudo dockerd
  • 如果直接闪退,回去检查 /etc/docker/daemon.json JSON 格式是否有错(多逗号、少引号都会启动失败)
  • 正常会持续打印日志不闪退,新开终端执行步骤 2
步骤 2:后台正常启动 docker 服务

Ctrl+C 关闭前台 dockerd 窗口,执行:

sudo service docker start
# 确认状态
sudo service docker status

显示 running 代表套接字生成成功。

步骤 3:验证 sock 文件存在
ls /var/run/docker.sock

能列出文件就正常

12.4.6、查看docker状态

# 开启docker
sudo service docker start

#查看状态
sudo service docker status

如果出现下方错误:

  • xx@PC-20230224ZYOW:/mnt/c/Users/Administrator$ sudo service docker start
  • Starting Docker: docker [ OK ]
  • xx@PC-20230224ZYOW:/mnt/c/Users/Administrator$ sudo service docker status
  • Docker is not running
12.4.6.1、关闭 Docker 内置 iptables 网络规则
切换 iptables 到 legacy

WSL 默认 nf_tables 有内核模块缺失问题,换回传统 iptables 即可解决 Docker 网络初始化失败。

# 切换iptables为legacy模式
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

# 验证切换成功
iptables --version
# 输出应包含 legacy,不是nf_tables

 Ctrl+O 保存,Ctrl+X 退出。

杀掉残留 dockerd 进程:
sudo pkill dockerd
sudo rm -rf /var/run/docker.sock
前台启动 dockerd 验证是否正常
sudo dockerd

不再报 iptables/nftables 错误、持续打印日志不退出即成功。

后台常驻启动 docker 关闭前台 dockerd(Ctrl+C),执行:
sudo service docker start
sudo service docker status
测试运行容器
docker pull hello-world
docker run hello-world

12.4.7、命令更换 docker 镜像源

Docker 镜像源配置文件:/etc/docker/daemon.json,之前你已经在这里关闭了 iptables,直接追加镜像源配置即可,不用新建文件。

 编辑 daemon.json(合并已有配置,不要覆盖)
sudo nano /etc/docker/daemon.json

粘贴完整内容(保留你之前关闭 iptables 的配置,新增镜像加速器):

{
  "iptables": false,
  "ip6tables": false,
  "bridge": "none",
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}
  • 中科大镜像:稳定优先;163、百度做备用加速源
  • 如果你有阿里云专属镜像加速器,加到数组最前面即可

保存:Ctrl+O → 回车确认 → Ctrl+X退出

重启 Docker 服务生效
# 杀掉残留进程
sudo pkill dockerd
# 重启docker
sudo service docker restart
# 查看运行状态
sudo service docker status
验证镜像源是否配置成功
docker info

拉到输出最下方,看到 Registry Mirrors 列表显示你配置的地址即生效。

一键拉取测试镜像验证速度
docker pull hello-world

12.5、VSCode远程连接WSL

进入vscode ---> 扩展 ---> 搜索WSL --->安装

WSL 终端进入 项目 目录执行:

cd ~/my_project
code .

自动弹出 VS Code,文件、终端、docker 命令全部原生支持

12.6、wsl存储空间迁移

WSL 内部 Linux 分区数据是ext4.vhdx,存储在C盘,随着使用会越来越大,为了防止爆内存,最好进行数据迁移。

把 Ubuntu 整个虚拟磁盘迁移到 D/E 盘,彻底不占用 C 盘空间:

# 导出备份
wsl --export Ubuntu-24.04 D:\Ubuntu2404.tar
# 注销C盘原有
wsl --unregister Ubuntu-24.04
# 导入到D盘
wsl --import Ubuntu-24.04 D:\WSL_Ubuntu2404 D:\Ubuntu2404.tar --version 2

总结

  1. 镜像pull(下载)、images(查看)、rmi(删除)
  2. 容器run(启动)、ps(查看)、exec(进入)、stop(停止)、rm(删除)
  3. 日志logs -f(实时查看)
  4. 清理system prune(释放空间)

更多推荐