Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序

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,输入:

    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】。然后运行:

    bash 复制代码
    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-slimjupyter/base-notebook 等。例如:

    bash 复制代码
    docker pull python:3.9-slim
    docker pull jupyter/base-notebook
  • 运行容器 (docker run) :使用 docker run 命令基于指定镜像创建并启动一个新容器。命令语法为:

    bash 复制代码
    docker run [选项] <镜像名> [执行命令]

    官方文档描述,"docker run 命令在新容器中运行指定的命令,如果本地没有该镜像,会先自动拉取镜像,然后启动容器"。例如:

    bash 复制代码
    docker run -d --name mynginx -p 8080:80 nginx

    这条命令将从 Docker Hub 拉取 nginx 镜像(如果尚未下载),在后台启动一个名为 mynginx 的容器,并将容器的 80 端口映射到宿主机的 8080 端口。启动容器后,可用 docker ps 查看正在运行的容器列表。

  • 进入容器 (docker exec) :如果需要在运行中的容器内执行交互命令,可以使用 docker exec。例如:

    bash 复制代码
    docker exec -it mynginx /bin/bash

    这会在 mynginx 容器中打开一个交互式 shell。根据官方文档,"docker exec 命令在正在运行的容器内执行新的命令"。可用它来启动容器内的交互式终端或执行其他任务。

  • 构建自定义镜像 (docker build):当需要构建自定义环境时,可以编写 Dockerfile,并使用命令:

    bash 复制代码
    docker build -t <镜像名>:<标签> .

    在当前目录下的 Dockerfile 会根据文件中的指令构建镜像,并打上指定标签,以便后续使用。比如,将当前项目目录打包:

    bash 复制代码
    docker build -t myapp:latest .

示例:

  • 示例 1 -- Python 环境:使用官方 Python 镜像启动容器并运行脚本。比如:

    bash 复制代码
    docker run --rm -it python:3.9-slim bash

    该命令会启动一个基于 Python 3.9 的交互式容器,并进入 bash 终端。在容器中可执行 python script.py 运行脚本,容器退出后自动删除(--rm)。

  • 示例 2 -- Jupyter Notebook 环境:使用 Jupyter 官方镜像启动一个 Notebook 服务。比如:

    bash 复制代码
    docker run -d -p 8888:8888 jupyter/base-notebook

    这会拉取 jupyter/base-notebook 镜像并运行一个后台容器,将容器的 8888 端口映射到本地 8888 端口(可在浏览器访问 http://localhost:8888)。运行后,容器日志中会显示访问令牌,输入到浏览器即可使用 JupyterLab/Notebook。该镜像已预装常用数据科学库,可直接用于深度学习实验。

通过上述步骤,即可在 Windows 平台上使用 Docker Desktop 配置和运行容器化环境,实现快速搭建开发环境、部署模型和服务的目的。

参考资料: Docker 官方文档及教程。

相关推荐
广州灵眸科技有限公司6 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
生活爱好者!11 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo12 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
MC皮蛋侠客12 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
王维同学12 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
YCOSA202512 小时前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网
Hui Baby13 小时前
K8S使用CRD和控制器简单应用
云原生·容器·kubernetes
汤姆yu13 小时前
CodeGeeX 4完整安装与实操使用全指南
人工智能·windows·ai·智能体·视频模型
用户2333768521815 小时前
Docker 端口"时通时不通"的排查实战
docker
吐了啊取名字太难15 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程