无法在这个位置找到: article_head.htm
返回首页

docker只能在固定gpu上跑吗

226 2025-03-05 07:13 赋能高科

一、docker只能在固定gpu上跑吗

docker只能在固定gpu上跑吗

在当今大数据和人工智能技术飞速发展的背景下,GPU作为一种高性能的计算资源,被广泛应用在深度学习、数据分析等领域。而Docker作为一种轻量级的容器技术,也为软件开发和部署提供了便利。但是,关于Docker是否只能在固定GPU上运行这一问题,一直是业界关注的焦点。

首先,我们了解一下Docker和GPU之间的关系。Docker本质上是一种虚拟化技术,通过容器的方式隔离不同的应用程序及其依赖。而GPU则是一种硬件加速器,可以加速深度学习、图形处理等计算密集型任务。在传统的Docker中,是无法直接使用GPU资源的,因为Docker容器默认不具备GPU支持的能力。

为什么docker默认无法直接支持GPU?

对于为什么Docker默认无法直接支持GPU,主要有以下几点原因:

  • 安全性:GPU是一种共享资源,直接将其暴露给Docker容器可能存在安全隐患。
  • 兼容性:不同GPU厂商的驱动程序可能不同,直接支持GPU需要考虑到各种硬件和驱动的兼容性。
  • 稳定性:GPU资源本身较为昂贵,直接暴露给所有容器可能导致资源竞争和稳定性问题。

因此,目前的Docker默认并不直接支持GPU加速。但是,针对这一问题,社区和厂商已经提出了一些解决方案。

如何在Docker中使用GPU?

要在Docker中使用GPU,可以考虑以下几种方式:

  1. 使用NVIDIA Docker:NVIDIA提供了一种名为NVIDIA Docker的解决方案,通过该工具可以在Docker容器中使用NVIDIA GPUs。
  2. 使用Docker插件:一些第三方插件如nvidia-docker、nvidia-container-runtime等,可以帮助在Docker中实现对GPU的支持。
  3. 使用容器编排工具:诸如Kubernetes、Docker Swarm等容器编排工具,也可以帮助在集群中管理GPU资源。

总的来说,虽然Docker默认不直接支持GPU,但是通过上述方法,可以比较方便地在Docker中实现对GPU的加速。对于深度学习等需要大量计算资源的任务,这些方法可以帮助用户更好地利用硬件资源,提升计算效率。

结语

总的来说,关于Docker是否只能在固定GPU上运行这一问题,并没有绝对的答案。通过使用NVIDIA Docker、Docker插件或容器编排工具,用户可以比较方便地在Docker中实现对GPU的支持。随着技术的不断发展,相信未来会有更多更便捷的方式让Docker与GPU更好地结合,为用户带来更好的使用体验。

二、将gpu在docker上运行

在当今数据驱动的世界中,深度学习和人工智能成为了科学和工业领域的重要研究方向。为了加快训练和推理速度,利用GPU进行计算已经成为了常见的做法。而Docker作为一个轻量级的容器化解决方案,为我们提供了在不同环境中运行应用程序的便利。那么如何将GPU和Docker结合起来,让我们能够在Docker容器中高效地运行GPU计算任务呢?本文将为你一一解答。

1. GPU和Docker的基础知识

在开始介绍如何在Docker上运行GPU之前,让我们先了解一些基础知识。

GPU(Graphics Processing Unit)是一种用于进行图形渲染和并行计算的处理器。相对于传统的中央处理器(CPU),GPU拥有更多的核心和更高的并行计算能力,使其在大规模并行计算任务上表现出色。

Docker是一个开源的容器化平台,可以将应用程序及其依赖环境打包成一个镜像,并在不同的主机上以容器的形式运行。Docker的一个重要特性是轻量级和可移植性,使得应用程序在不同环境中的部署变得更加简单。

2. 在Docker上配置GPU支持

要在Docker上运行GPU计算任务,我们需要配置GPU支持。以下是一些基本的步骤。

  1. 首先,确保你的系统上已经安装了合适的GPU驱动程序。不同的GPU厂商有不同的驱动程序安装方法,请根据自己的GPU类型和操作系统选择正确的驱动程序。
  2. 安装Docker CE(Community Edition)或者Docker EE(Enterprise Edition)。可以根据操作系统的不同,选择相应的安装方法。在安装过程中,请确保选择正确的版本,以适应你的操作系统和硬件配置。
  3. 安装NVIDIA Docker插件。NVIDIA Docker是一个用于支持Docker容器中GPU计算的插件。在安装之前,确保你的系统满足要求,并按照官方文档提供的步骤进行安装。

完成上述步骤后,我们就成功配置了在Docker上运行GPU计算任务的环境。

3. 在Docker中运行GPU计算任务

有了GPU支持的Docker环境,我们就可以在容器中运行GPU计算任务了。以下是一些示例代码,展示了如何在Docker容器中运行GPU计算相关的任务。

<dockerfile> FROM nvidia/cuda:10.0-base # 安装必要的依赖库 RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ && rm -rf /var/lib/apt/lists/* # 安装深度学习框架和相关库 RUN pip3 install tensorflow-gpu==2.0.0 # 将你的代码复制到容器中 COPY your_code.py /app # 设置工作目录 WORKDIR /app # 运行你的代码 CMD ["python3", "your_code.py"] </dockerfile>

在上述示例中,我们使用了nvidia/cuda:10.0-base作为基础镜像,并安装了必要的依赖库和深度学习框架。然后复制你的代码到容器中,并设置工作目录。最后,在容器中运行你的代码。

需要注意的是,为了在容器中访问GPU设备,我们使用了nvidia/cuda镜像,并安装了适当的GPU驱动程序。

4. Docker Compose配置GPU支持

如果你使用Docker Compose来管理多个容器,你也可以配置GPU支持。以下是一个示例的Docker Compose配置文件。

version: '3' services: gpu_app: build: context: . dockerfile: Dockerfile runtime: nvidia

在上述示例中,我们使用runtime关键字指定了运行时为nvidia,这将启用GPU支持。然后通过build关键字指定了Dockerfile的路径。

通过这种方式,你可以轻松地管理多个需要GPU支持的容器,统一配置在一个Docker Compose文件中。

5. 总结

将GPU和Docker结合起来,可以帮助我们更高效地进行GPU计算任务。通过配置GPU支持和使用合适的镜像,我们可以在Docker中轻松地运行基于GPU的应用程序。

未来,随着GPU和Docker的发展,我们可以期待更多便利和功能的提升。在科学研究和工业应用中,利用GPU和容器化技术将会成为不可或缺的一部分。

三、在gpu跑数据

在GPU上运行数据的重要性

随着数据科学和机器学习的快速发展,我们越来越多地使用GPU来加速计算。在GPU上运行数据不仅提高了处理速度,而且还可以显著减少处理时间。这对于那些需要处理大量数据的人来说非常重要。但是,在GPU上运行数据并非易事,有许多需要考虑的因素。在这里,我们将讨论一些关键步骤和要点,以确保您能够充分利用GPU资源。

设置环境

首先,您需要为GPU环境做准备。确保您的计算机安装了支持的GPU驱动程序以及必要的CUDA库。这可能包括NVIDIA显卡和其他类似的软件,用于与GPU通信并进行并行计算。

选择合适的工具

其次,选择合适的工具和库来帮助您在GPU上运行数据。有许多库和工具可供选择,例如TensorFlow、PyTorch、Caffe等。这些库提供了许多方便的功能,可以帮助您更快地构建模型和加速计算。

处理数据

一旦环境设置好了,您可以开始处理数据以在GPU上运行。对于大规模数据集,可能需要将数据分区和并行化,以便每个GPU可以独立处理一部分数据。这可以使用像Hadoop或Spark这样的工具来完成。

并行化模型

在模型构建方面,并行化是非常重要的。这可以使用CUDA内核来完成,它们允许在GPU上运行线程。为了充分利用GPU资源,您需要编写高效的代码,并使用适当的并行算法来加速计算。

优化内存使用

最后,优化内存使用也是非常重要的。在GPU上运行时,内存使用量可能会非常大。因此,您需要仔细规划内存使用,并确保您的代码不会耗尽可用内存。总的来说,在GPU上运行数据是一个复杂的过程,需要仔细考虑和规划。但是,一旦您掌握了这些步骤和要点,您就可以充分利用GPU资源来加速您的计算工作流程。

四、如何让matlab程序在GPU上跑

MATLAB是一种广泛应用于科学计算和工程应用领域的高级编程语言和环境。然而,随着数据量的日益增大和计算复杂度的提高,常规的 CPU 处理器可能无法满足需求。为了充分利用现代计算机的潜力,让 MATLAB 程序在 GPU 上运行可能是一个很好的选择。

为什么选择在 GPU 上运行 MATLAB

GPU(Graphics Processing Unit,图形处理器)是一种特殊的硬件,通常用于处理图形和图像。然而,GPU 的并行计算能力远超过传统的 CPU,这使得它们在科学计算、数据分析和机器学习等领域广受欢迎。

在 MATLAB 中,使用 GPU 运行程序可以极大地提高计算速度和性能。由于 GPU 具有大量的计算核心和内存带宽,它可以同时处理大量的计算任务,加速复杂的数值计算、矩阵运算和并行处理。

如何将 MATLAB 程序迁移到 GPU 上运行

要将 MATLAB 程序迁移到 GPU 上运行,需要遵循以下步骤:

  1. 检查 GPU 支持:首先,要确保你的计算机具备支持 GPU 运算的硬件。大多数现代计算机都内置了一块独立的 GPU,但有时你需要额外购买一块高性能的显卡。另外,还需要安装适当的 GPU 驱动程序和相关软件。
  2. 编写 GPU 代码:接下来,需要对 MATLAB 程序进行修改,使其能够利用 GPU 的并行计算能力。这涉及到将一些计算密集型的任务封装成适合 GPU 加速的函数,并使用 MATLAB 提供的 GPU 计算工具箱进行编程。
  3. 数据传输和内存管理:在 GPU 上运行程序需要将数据从主机内存传输到 GPU 内存,并管理好 GPU 内存的使用。这需要对数据传输的方式、内存分配和释放进行优化,以避免性能瓶颈和资源浪费。
  4. 性能优化和测试:在将 MATLAB 程序迁移到 GPU 上之后,需要对其进行性能优化和测试。这包括使用合适的算法和数据结构、调整 GPU 加速参数、验证结果的正确性等。

适合在 GPU 上运行的 MATLAB 程序

不是所有类型的 MATLAB 程序都适合在 GPU 上运行。通常来说,适合在 GPU 上运行的程序有以下几个特点:

  • 计算密集型:程序需要进行大量的数值计算、矩阵运算或复杂的算法,以及并行处理。
  • 数据并行:如果程序可以将数据分割成多个部分并独立处理,那么可以通过 GPU 的并行计算能力提高运行速度。
  • 向量化:使用 MATLAB 的向量化操作可以将多个计算任务合并成一个,从而利用 GPU 的并行性。

不适合在 GPU 上运行的程序包括:

  • 输入/输出密集型程序,因为 GPU 的主要优势在于计算能力而非 I/O 性能。
  • 序贯计算、控制流程较复杂的程序,因为 GPU 的并行计算模型与传统的顺序执行模型不同。
  • 内存占用较大的程序,因为 GPU 的内存资源有限。

使用 GPU 加速的例子

下面是一个使用 GPU 加速的 MATLAB 程序的简单示例,用于计算两个矩阵的乘积:

<strong>function</strong> C = matrixMultiplication(A, B) % 将输入矩阵转换为 GPU 数组 gpuA = gpuArray(A); gpuB = gpuArray(B); % 在 GPU 上进行矩阵乘法运算 gpuC = gpuA * gpuB; % 将结果从 GPU 数组转换为常规矩阵 C = gather(gpuC); </code>

在这个例子中,输入矩阵 A 和 B 被拷贝到 GPU 内存,并使用 GPU 数组进行计算。最后,通过 gather 函数将结果从 GPU 数组转换为常规矩阵。

通过对程序进行类似的改造,你可以利用 GPU 加速来提高 MATLAB 程序的运行速度和性能。

结论

通过让 MATLAB 程序在 GPU 上运行,你可以利用 GPU 的并行计算能力来加速复杂的数值计算和矩阵运算。然而,要成功地将程序迁移到 GPU 上运行,你需要对代码进行一些修改,并对数据传输和内存管理进行优化。此外,不是所有类型的程序都适合在 GPU 上运行,需要根据程序的特点进行评估。

希望这篇文章对你了解如何让 MATLAB 程序在 GPU 上运行有所帮助。如果你有任何问题或建议,请随时留言。

五、可以在docker容器里跑windows么?

不可以!Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:

1.Docker

是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用

2.LXC

是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的3.隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库4.网络管理相对简单,主要是基于namespace隔离

5.cgroup

的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)

6.docker

对disk的管理比较有限

7.container

随着用户进程的停止而销毁,container中的log等用户数据不便收集针对1-2,有windows base应用的需求的基本可以pass了; 3-5主要是看用户的需求,到底是需要一个container还是一个VM, 同时也决定了docker作为 IaaS 不太可行。

六、使用Docker在CentOS上设置IP地址

引言

Docker是一种流行的容器化技术,允许您在不同的操作系统中创建和管理容器。本文将介绍如何在CentOS上使用Docker设置IP地址,并提供一些相关的常见问题和解决方案。

什么是Docker

Docker是一种开源平台,用于自动化部署、扩展和管理应用程序。它利用容器来打包应用程序及其依赖项,以便可以在任何环境中进行平稳快速的部署。使用Docker,您可以方便地创建和管理容器,从而实现更高效的资源利用和更简单的应用部署。

在CentOS上安装Docker

  1. 更新软件库:yum update
  2. 安装Docker引擎:yum install docker-ce
  3. 启动Docker服务:systemctl start docker
  4. 设置开机自启动:systemctl enable docker

设置Docker容器IP地址

默认情况下,Docker容器使用桥接网络模式,其IP地址由Docker守护程序自动分配。但是,有时您可能需要手动配置Docker容器的IP地址。下面是设置Docker容器IP地址的步骤:

  1. 查找Docker容器的名称或ID:docker ps
  2. 进入Docker容器的命令行界面:docker exec -it <容器名称或ID> /bin/bash
  3. 编辑容器的网络配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0
  4. 在配置文件中添加以下内容,替换为您希望设置的IP地址信息:
            TYPE=Ethernet
            BOOTPROTO=static
            DEFROUTE=yes
            NAME=eth0
            UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
            DEVICE=eth0
            ONBOOT=yes
            IPADDR=<您的IP地址>
            NETMASK=<您的子网掩码>
            GATEWAY=<您的网关>
          
  5. 保存并退出网络配置文件。
  6. 重新启动网络服务:service network restart
  7. 退出容器的命令行界面:exit

常见问题和解决方案

问题:如何查找Docker容器的IP地址? 解决方案:您可以使用docker inspect命令来查找Docker容器的IP地址。 示例:docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名称或ID>

问题:为什么无法访问Docker容器的IP地址? 解决方案:请确保Docker容器的IP地址与宿主机所在网络的IP地址处于同一子网段,并确保网络设置正确。

结论

本文介绍了如何使用Docker在CentOS上设置IP地址。通过遵循上述步骤,您可以方便地配置Docker容器的IP地址,并解决一些常见的相关问题。希望本文对您有所帮助!

感谢您阅读本文,如果您有任何问题或疑问,请随时提问。祝您使用Docker愉快!

七、使用Docker在CentOS上安装和配置HBase

概述

本文将介绍如何使用Docker在CentOS上安装和配置HBase,帮助读者快速搭建一个HBase环境。

什么是Docker?

Docker是一个开源的容器化平台,可以帮助用户轻松打包、分发和运行应用程序。通过使用Docker,我们可以隔离和管理不同的应用程序及其依赖,实现快速部署和扩展。

为什么选择CentOS作为操作系统?

CentOS是一种基于Linux的操作系统,具有稳定性高、安全性好、易于维护等特点。在Docker中使用CentOS作为基础镜像,可以提供一个可靠的运行环境。

什么是HBase?

HBase是一种分布式的、面向列的NoSQL数据库,基于Hadoop的HDFS文件系统。它具有高可扩展性、高性能和高可靠性,被广泛用于大规模数据存储和实时查询领域。

使用Docker安装和配置HBase

  1. 在CentOS上安装Docker,并启动Docker服务。
  2. 在Docker中下载并运行HBase的镜像。
  3. 配置HBase的环境变量,以便正常运行。
  4. 启动HBase,并通过HBase Shell测试是否安装成功。

总结

通过本文的介绍,我们了解了如何使用Docker在CentOS上安装和配置HBase。这将大大简化搭建HBase环境的过程,同时提高了部署和管理的效率。

感谢您阅读本文,希望对您有所帮助!

八、使用Docker在CentOS上实现IPVS负载均衡

什么是Docker和CentOS?

Docker是一种开源的容器化平台,可以帮助开发者轻松地构建、部署和管理应用程序。CentOS是一种流行的Linux发行版,被广泛用于服务器环境。

IPVS负载均衡的概念

IPVS是一个Linux内核的功能模块,可以实现IP层的负载均衡。它利用网络层的IP地址和端口来将客户端请求分发到后端的多台服务器上,从而提高应用程序的可伸缩性和可用性。

在CentOS上安装Docker

首先,你需要确保你的CentOS系统上已经安装了Docker。你可以通过以下命令来检查:

$ docker --version

如果你还没有安装Docker,你可以按照官方文档提供的步骤进行安装。

使用Docker创建IPVS负载均衡

在CentOS上使用Docker创建IPVS负载均衡非常简单。首先,你需要创建一个Docker网络,这样IPVS就能够在容器之间进行通信。你可以使用以下命令来创建网络:

$ docker network create -d bridge ipvs-net

接下来,你需要创建多个运行你应用程序的容器,并将它们加入到刚刚创建的网络中:

$ docker run -d --name container1 --network ipvs-net image1
$ docker run -d --name container2 --network ipvs-net image2
$ docker run -d --name container3 --network ipvs-net image3

然后,你可以使用Docker的命令行界面来配置IPVS负载均衡规则。以下是一个设置Round Robin算法的示例:

$ docker exec -it container1 ipvsadm -A -t 192.168.0.1:80 -s rr
$ docker exec -it container1 ipvsadm -a -t 192.168.0.1:80 -r container2:80 -g
$ docker exec -it container1 ipvsadm -a -t 192.168.0.1:80 -r container3:80 -g

现在,客户端可以通过访问 IP 地址 192.168.0.1 的端口 80 来访问你的应用程序,并自动进行负载均衡。

总结

通过使用Docker和CentOS,你可以轻松地在CentOS上实现IPVS负载均衡。这种方式可以帮助你提高应用程序的可伸缩性和可用性,从而更好地满足用户的需求。

感谢你阅读本文,希望它能够对你的工作有所帮助!

九、在 Docker Hub 上使用 CentOS:快速入门指南

当提到容器化技术时,Docker 无疑是如今最受欢迎的选择之一。而在 Docker 的世界里,CentOS 作为一个轻量且稳定的操作系统,备受开发者和运维工程师喜爱。对于很多人来说,从 Docker Hub 下载并使用 CentOS 镜像是他们容器化之旅的第一步。

我还记得第一次接触 Docker 的时候,看到那一堆镜像,简直让人目不暇接。而当我发现可以轻松地在 Docker Hub 上获得 CentOS 后,心里无比兴奋。今天,我想和大家分享一下如何在 Docker Hub 上获取 CentOS 镜像以及一些实用的小窍门。

什么是 Docker Hub?

首先,让我们一起了解一下Docker Hub。它是一个托管 Docker 镜像的在线平台,像一个大型的镜像仓库,开发者可以在这里分享、管理和下载镜像。在这里,我们可以找到各种操作系统、开发环境和应用程序的镜像,而 CentOS 就是其中之一。

如何在 Docker Hub 上找到 CentOS 镜像

很简单,你只需要打开 Docker Hub 的官方网站,然后在搜索框中输入“CentOS”。点击搜索后,结果中会出现多个与 CentOS 相关的镜像。其中,最受欢迎的是官方的 CentOS 镜像,它的描述中详细列出了镜像的版本和用途。

下载和运行 CentOS 镜像

一旦你找到想要的 CentOS 镜像,下载和运行它的步骤也非常简单。你只需使用以下命令:

docker pull centos

这个命令会从 Docker Hub 下载最新的 CentOS 镜像到你的本地系统。一旦下载完成,你可以通过以下命令来运行 CentOS 容器:

docker run -it centos

这将开启一个新的交互式 Bash 终端,让你可以在 CentOS 容器中执行命令。

常见问题解答

在启动使用 CentOS 镜像的过程中,很多人可能会遇到一些问题。以下是一些常见的疑问及其解答:

  • 问:如何查看已下载的镜像?答:可以使用命令 docker images 来列出所有已下载的镜像。
  • 问:如何删除本地的 CentOS 镜像?答:可以使用 docker rmi centos 命令来删除指定的镜像。
  • 问:为什么容器可以运行得如此快速?答:Docker 容器采用的是共享内核的模式,这意味着多个容器可以利用宿主机的资源,提高了效率。

CentOS 镜像的实用技巧

使用 CentOS 镜像时,有几个小窍门可以帮助你更高效地工作:

  • 尽量使用 标签 明确指定版本,例如 docker pull centos:7,可以帮助你避免出现不兼容的问题。
  • 通过 Dockerfile 自定义自己的镜像,可以根据自己的需求添加需要的软件,简化后续的使用过程。
  • 保持镜像的更新,定期拉取最新的 CentOS 镜像,以确保你拥有最新的安全补丁与特性。

总结来说,Docker Hub 上的 CentOS 镜像是一个很好的工具,为我们的容器化工作提供了强大的支持。通过简单几步的操作,你就能轻松地获取并运行 CentOS,为后续的开发和测试工作打下良好的基础。如果你也像我一样,对容器化充满好奇,不妨试试在 Docker Hub 中探索更多有趣的镜像吧!

十、Docker在Windows 10上的应用与实践

Docker是一种容器化技术,可以帮助开发者更加高效地打包、部署和运行应用程序。随着Windows 10的普及,越来越多的开发者开始在Windows 10上使用Docker。那么,Docker在Windows 10上究竟有哪些应用和实践呢?让我们一起来探讨一下。

Docker在Windows 10上的应用

Docker在Windows 10上有以下几个主要应用场景:

  • 应用程序打包和部署:开发者可以使用Docker将应用程序及其依赖项打包成一个标准化的容器镜像,然后在不同的环境中快速部署和运行。这大大简化了应用程序的交付过程。
  • 开发环境隔离:Docker可以为每个开发者创建一个独立的开发环境,避免了环境依赖问题,提高了开发效率。
  • 微服务架构:Docker非常适合微服务架构,开发者可以将应用程序拆分成多个独立的服务,每个服务都打包成一个Docker容器,实现服务的高度解耦和灵活扩展。
  • 持续集成和持续部署:Docker可以与持续集成和持续部署工具无缝集成,大大提高了应用程序的交付效率。

Docker在Windows 10上的实践

要在Windows 10上使用Docker,首先需要安装Docker Desktop for Windows。这是一个集成了Docker Engine、Docker CLI客户端、Docker Compose等工具的桌面应用程序。安装完成后,开发者就可以开始使用Docker在Windows 10上进行应用程序的开发、构建和部署了。

下面是一些常见的Docker在Windows 10上的实践步骤:

  • 创建Docker镜像:开发者可以编写Dockerfile文件,定义应用程序的构建过程,然后使用Docker build命令构建Docker镜像。
  • 运行Docker容器:开发者可以使用Docker run命令基于构建好的镜像启动Docker容器,并对容器进行管理和编排。
  • 编排多个容器:对于复杂的应用程序,开发者可以使用Docker Compose定义和管理多个相互关联的容器。
  • 实现持续集成和持续部署:开发者可以将Docker与Jenkins、Azure DevOps等持续集成和持续部署工具集成,实现自动化的应用程序交付。

总的来说,Docker在Windows 10上有着广泛的应用前景,开发者可以利用Docker提高应用程序的开发、部署和运维效率。希望通过本文的介绍,大家能够更好地了解Docker在Windows 10上的应用与实践。

无法在这个位置找到: article_footer.htm