Windows 系统上的 Docker 安装与使用指南
1. Windows 上配置 Docker
-
检查系统要求:使用 64 位 Windows 10/11,BIOS 已启用硬件虚拟化(VT-x/AMD-V)。Windows 版本最好更新到 2004 及以上(内部版本19041+),以支持最新 WSL 功能。
-
启用 WSL 2 功能:打开「控制面板→程序→启用或关闭Windows功能」,勾选“适用于 Linux 的 Windows 子系统 (WSL)”和“虚拟机平台”,然后重启电脑。重启后,右键以管理员身份运行 PowerShell,输入:
wsl --install
该命令会启用运行 WSL 所需的功能并安装默认的 Ubuntu Linux 发行版。完成安装后再次重启,回到 PowerShell 输入
wsl -l -v
查看已安装发行版及其 WSL 版本;若发行版仍处于 WSL1 模式,可执行wsl --set-version <发行版名> 2
将其切换到 WSL2。 -
下载并安装 Docker Desktop:访问 Docker 官网 下载 Docker Desktop for Windows 安装包。双击运行下载得到的安装程序(例如
Docker Desktop Installer.exe
),一路“下一步”完成安装。安装结束后,从「开始菜单」启动 Docker Desktop【59†L119-122】。 -
配置 Docker Desktop:启动 Docker Desktop 后,右键任务栏中隐藏的 Docker 图标,选择“设置”。在“常规”页面中勾选“使用基于 WSL 2 的引擎”【59†L121-122】。然后切换到“资源 → WSL 集成”选项卡,勾选要启用 Docker 集成的所有 WSL 2 发行版(如 Debian、Ubuntu 等)【59†L124-125】。
在 Docker Desktop 设置中的“WSL 集成”页,可以看到已安装的 WSL 2 发行版列表(如 Debian、Ubuntu-18.04/20.04 等),通过切换开关可以决定是否让 Docker 在对应发行版中运行。启用后,Docker Desktop 会使用 WSL 2 引擎来运行 Linux 容器,从而获得更好的性能和兼容性【59†L123-125】。 -
验证安装是否成功:打开一个 WSL 发行版终端(例如 Ubuntu),执行
docker --version
,若成功安装会显示 Docker 版本和内部版本号【59†L127-129】。然后运行:docker run hello-world
若输出“Hello from Docker!”等欢迎信息,说明 Docker 已安装并正常运行【59†L127-130】。
2. Docker 的基本原理和常见用途
Docker 使用容器技术来打包和运行应用。容器类似轻量级虚拟机,但它不需要完整的操作系统;容器与宿主机共享相同的 Linux 内核,只在镜像中包含运行应用所需的依赖(库、框架等),从而大幅减小体积并提高启动性能。这样,无论在何种操作系统环境中运行,容器中的应用都能保持一致的运行效果,避免环境差异导致的问题。Dockerfile 是一个文本文件,用于定义如何构建自定义镜像。Dockerfile 中按顺序写入一条条指令,每条指令会创建镜像的一层,从而逐步构建起最终镜像。通过撰写 Dockerfile,开发者可以指定基础镜像、复制代码、安装依赖等操作,最终生成自己的镜像。
Docker 可用于多种场景,例如:
- 快速搭建开发环境:可以使用 Docker 镜像封装开发所需的工具链和依赖,只需拉取镜像即可快速还原整个开发环境,避免了手工安装配置的麻烦。
- 部署深度学习模型:许多深度学习框架(如 TensorFlow、PyTorch 等)在 Docker Hub 上提供了官方镜像,支持 CPU 和 GPU(CUDA)加速。使用这些镜像可以快速搭建并隔离训练或推理环境,而不破坏本地系统配置。
- 运行数据库:可以通过容器运行 MySQL、MongoDB 等数据库服务。例如,用 Docker 运行 MySQL,只需执行
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxx mysql:8.0
等命令,即可快速部署并启动 MySQL 数据库。这种方式简洁高效,且容器化的数据库易于管理和迁移。 - 构建微服务架构:每个微服务都可以封装在独立的容器中,并使用 Kubernetes 等编排工具进行管理。结合持续集成/持续交付 (CI/CD) 体系,可以在不中断整体服务的情况下更新单个容器。这使得系统具有更好的可扩展性和可用性:新版本的容器准备就绪后,只需切换流量到新容器即可完成平滑升级,而无需停机维护。
3. 在 Docker 中运行程序
在 Docker 中运行程序时,一般分为以下几个步骤:
-
拉取镜像 (
docker pull
):通过docker pull <镜像名>
可以从公共仓库(Docker Hub)下载镜像。指出,Docker Hub 上包含了大量预构建镜像,可直接拉取使用,如常见的python:3.9-slim
、jupyter/base-notebook
等。例如:docker pull python:3.9-slim docker pull jupyter/base-notebook
-
运行容器 (
docker run
):使用docker run
命令基于指定镜像创建并启动一个新容器。命令语法为:docker run [选项] <镜像名> [执行命令]
官方文档描述,“
docker run
命令在新容器中运行指定的命令,如果本地没有该镜像,会先自动拉取镜像,然后启动容器”。例如:docker run -d --name mynginx -p 8080:80 nginx
这条命令将从 Docker Hub 拉取
nginx
镜像(如果尚未下载),在后台启动一个名为mynginx
的容器,并将容器的 80 端口映射到宿主机的 8080 端口。启动容器后,可用docker ps
查看正在运行的容器列表。 -
进入容器 (
docker exec
):如果需要在运行中的容器内执行交互命令,可以使用docker exec
。例如:docker exec -it mynginx /bin/bash
这会在
mynginx
容器中打开一个交互式 shell。根据官方文档,“docker exec
命令在正在运行的容器内执行新的命令”。可用它来启动容器内的交互式终端或执行其他任务。 -
构建自定义镜像 (
docker build
):当需要构建自定义环境时,可以编写 Dockerfile,并使用命令:docker build -t <镜像名>:<标签> .
在当前目录下的 Dockerfile 会根据文件中的指令构建镜像,并打上指定标签,以便后续使用。比如,将当前项目目录打包:
docker build -t myapp:latest .
示例:
-
示例 1 – Python 环境:使用官方 Python 镜像启动容器并运行脚本。比如:
docker run --rm -it python:3.9-slim bash
该命令会启动一个基于 Python 3.9 的交互式容器,并进入 bash 终端。在容器中可执行
python script.py
运行脚本,容器退出后自动删除(--rm
)。 -
示例 2 – Jupyter Notebook 环境:使用 Jupyter 官方镜像启动一个 Notebook 服务。比如:
docker run -d -p 8888:8888 jupyter/base-notebook
这会拉取
jupyter/base-notebook
镜像并运行一个后台容器,将容器的 8888 端口映射到本地 8888 端口(可在浏览器访问 http://localhost:8888)。运行后,容器日志中会显示访问令牌,输入到浏览器即可使用 JupyterLab/Notebook。该镜像已预装常用数据科学库,可直接用于深度学习实验。
通过上述步骤,即可在 Windows 平台上使用 Docker Desktop 配置和运行容器化环境,实现快速搭建开发环境、部署模型和服务的目的。
参考资料: Docker 官方文档及教程。