欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序

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

2025/5/21 15:06:32 来源:https://blog.csdn.net/2301_79002390/article/details/147703670  浏览:    关键词: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,输入:

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词