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"

确保一切都正常。

相关推荐
江湖有缘19 小时前
PicoShare + Docker 实战:打造极简自托管文件分享系统
运维·docker·容器
负二代0.019 小时前
系统引导过程及修复
linux·运维·服务器
kft131419 小时前
SkyWalking10.3.0-性能监控管理工具部署教程-Docker模式(二)-保姆级教程
运维·docker·容器
2501_9419820519 小时前
企微死锁破解:自动化推送自动恢复技术
运维·自动化·企业微信
宇钶宇夕19 小时前
CoDeSys入门实战一起学习(十三):函数(FUN)深度解析:自定义、属性与实操案例
运维·算法·自动化·软件工程
bukeyiwanshui19 小时前
Nginx 服务器
运维·服务器·nginx
楼田莉子19 小时前
Linux学习之库的原理与制作
linux·运维·服务器·c++·学习
枷锁—sha19 小时前
【Vulhub】1Panel 访问控制绕过实战指南 (CVE-2024-39907)
运维·学习·安全·网络安全
jingqiulyue20 小时前
windows 家庭版 不显示Hyper-v怎么办
windows
周公挚友20 小时前
2026年单服务器 Ubuntu 24.04 无公网离线部署 MongoDB 8.0.17 三节点副本集(主 / 从 / 仲裁)保姆级教程
linux·mongodb·ubuntu