Windows系统安装Docker容器搭建Linux环境

一、环境准备

1. 确认 Windows 功能已开启

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

勾选 "适用于 Linux 的 Windows 子系统" 和 "虚拟机平台"

点"确定"后重启电脑。

开机后,管理员模式打开 Terminal, 启用 WSL 和支撑 WSL2 所需的虚拟机平台组件。

bash 复制代码
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

再次重启电脑。

2. 更新和升级 WSL2 内核

  • 下载安装包:从微软官方网站下载 WSL2 Linux 内核更新包
  • 安装完成后,在 Terminal(管理员)中运行:
bash 复制代码
wsl --update
wsl --set-default-version 2

如果你还没安装任何 Linux 发行版,可以直接运行:

bash 复制代码
wsl --install

3. 检查 WSL 发行版状态

在 Terminal(管理员)里输入:

bash 复制代码
wsl --list --verbose

可以看到已经安装的 Linux 发行版:

复制代码
NAME                   STATE           VERSION
Ubuntu                 Stopped         2
docker-desktop         Stopped         2
docker-desktop-data    Stopped         2

如果你还没安装任何 Linux 发行版,可以直接运行:

bash 复制代码
wsl --install

这会自动安装 Ubuntu 并设置 WSL2 为默认。

二、安装 Docker Desktop

1. 官网下载安装 Docker Desktop

  • Docker 官网 下载并安装最新版。
  • 安装过程中勾选 "Use WSL 2 based engine",并完成向导重启。

2. Docker Engine 配置镜像源

打开 Docker Desktop,进入设置页面 (齿轮图标) ,编辑 Docker Engine 为下面内容:

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "https://hub.atguigu.com"
  ],
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/",
    "https://mirror.ccs.tencentyun.com"
  ]
}

3. Docker Desktop 与 WSL 集成

打开设置的 Resources 页面。

打开 WSL integration 页面,勾选 Enable integration with my default WSL distro 选项。

然后检查 Advanced 页面内是否提示:You are using the WSL 2 backend。显示这个说明我们已经集成上了 WSL。

这里要求已安装至少一个 Linux 发行版(如 Ubuntu),如果没有安装,需要参考 环境准备 完成安装。

三、创建开发镜像

1. 编写 Dockerfile 脚本

通过编写 Dockerfile,可以在镜像里预装编译器、依赖包、工具链等,一次构建、随处可复用。

我们需要创建一个目录作为Docker的运行目录(如 D:\Tools\Docker\my-dev),然后在运行目录下面创建一个 Dockerfile 文件,粘贴以下内容:

bash 复制代码
# 1. 基础镜像
FROM ubuntu:22.04

# 关闭交互提示
ENV DEBIAN_FRONTEND=noninteractive

# 3. 替换为国内 HTTP 源,避免 ca-certificates 未安装时的证书校验错误
RUN sed -i 's|http://.*.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list \
 && sed -i 's|http://security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list

# 4. 更新索引并安装必备包(含 ca-certificates),遇到下载错误时重试 3 次并跳过缺失包
RUN apt-get update \
 && apt-get install -y --no-install-recommends \
      ca-certificates \
      build-essential \
      git \
      curl \
      vim \
      python3 \
      python3-pip \
      nodejs \
      npm \
      --fix-missing \
      -o Acquire::Retries=3 \
 && rm -rf /var/lib/apt/lists/*

# 可选:更换回官方 HTTPS 源(此时已有 ca-certificates,可校验证书)
# RUN sed -i 's|http://mirrors.aliyun.com|https://archive.ubuntu.com|g' /etc/apt/sources.list

# 4. 创建一个非 root 用户,避免容器内文件权限问题
ARG USERNAME=dev
ARG UID=1000
RUN useradd -m -u ${UID} -s /bin/bash ${USERNAME} \
    && apt-get update \
    && apt-get install -y sudo \
    && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
    && rm -rf /var/lib/apt/lists/*

# 5. 切换到普通用户
USER ${USERNAME}

# 6. 工作目录
WORKDIR /workspace

# 7. 默认启动 shell
CMD ["bash"]

2. 构建镜像

打开 Terminal 切到该目录:

bash 复制代码
mkdir D:\Tools\Docker\my-dev
cd D:\Tools\Docker\my-dev

这里我为了防止一次性构建时拉取 ubuntu:22.04 时间过长,所以先手动拉下来。

bash 复制代码
docker pull ubuntu:22.04

然后构建镜像(给它起个易记的名字,比如 ubuntu-demo):

bash 复制代码
docker build -t ubuntu-demo .

其中,-t ubuntu-demo 是给镜像命名,. 表示在当前目录作为构建上下文,Dockerfile 也在这里。

3. 运行开发容器

把本地项目(或任意代码目录)挂载到容器中,保持代码与容器内同步。

bash 复制代码
docker run -it --rm --name ubuntu-dev -v D:\Tools\Docker\my-dev:/workspace -w /workspace ubuntu-demo
  • --rm:退出后自动删除容器
  • -v 本地目录:容器目录:映射代码
  • -w /workspace:进入容器后的工作路径

此时,你将进入容器的 bash,且 /workspace 下即是 Windows 里的 my-dev

4. 容器内验证

进入容器后可执行:

bash 复制代码
# 验证基础工具
git --version
gcc --version
python3 --version
npm --version

# 测试 sudo
sudo echo "sudo OK"

确保一切都正常。

相关推荐
一叶知秋yyds4 分钟前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
斯普信云原生组1 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪1 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人1 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
safestar20122 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
liliangcsdn2 小时前
mstsc不在“C:\Windows\System32“下在C:\windows\WinSxS\anmd64xxx“问题分析
开发语言·windows
来一颗砂糖橘2 小时前
负载均衡的多维深度解析
运维·负载均衡
低频电磁之道2 小时前
解决 Windows C++ DLL 导出类不可见的编译错误
c++·windows
楠奕2 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT3 小时前
远程服务器走本地代理
运维·服务器