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 官方文档及教程。

相关推荐
xzl047 小时前
centos yum源,docker源
linux·docker·centos
喝养乐多长不高7 小时前
深入探讨redis:哨兵模式
数据库·redis·缓存·docker·主从复制·哨兵模式
小黑屋说YYDS10 小时前
Docker常用命令介绍
运维·docker·容器
王 富贵10 小时前
docker命令
运维·docker·容器
就叫飞六吧10 小时前
Docker 挂载策略:何时使用临时容器拷贝默认配置,何时直接挂载?
运维·docker·容器
沐雨风栉11 小时前
Ubuntu+Docker+内网穿透:保姆级教程实现安卓开发环境远程部署
android·ubuntu·docker
腾昵猫11 小时前
Linux从网卡接收到内核软中断处理整体流程
linux·运维·windows
ImangoCloud11 小时前
Git的windows开发与linux开发配置
linux·windows·git
鹏大师运维12 小时前
中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
linux·windows·国产操作系统·统信uos·中科方德·麒麟2503·鸳鸯火锅