Docker for Windows使用简介

上一篇文章中,通过演练指导的方式,介绍了在Docker中运行ASP.NET Core Web API应用程序的过程。本文将介绍Docker for Windows的使用。

先决条件

前两周时间,Docker发布了Docker for Windows的正式版,于是就可以在Windows下运行Docker容器了。要在Windows下运行Docker,需要满足以下先决条件:

  • 64位Windows 10 Pro、Enterprise或者Education版本(Build 10586以上版本,需要安装1511 November更新)
  • 在系统中启用Hyper-V。如果没有启用,Docker for Windows在安装过程中会自动启用Hyper-V(这个过程需要重启系统)

不过,如果不是使用的Windows 10,也没有关系,可以使用Docker Toolbox作为替代方案。

Docker for Windows的安装与使用

在Windows 10中,请点击此处下载Docker for Windows的安装包,然后开始安装。正如上面所述,如果Hyper-V没有启用,安装过程会自动启用Hyper-V,这将需要重新启动Windows系统。安装完成后,就可以在Windows下使用Docker了。

启动Docker for Windows,会在系统托盘部分显示一条小鲸鱼的图标:。在Docker完全启动之前,小鲸鱼背上的小方块会不停地闪烁变化,等小方块稳定不变后,表示系统完全启动成功,此时就可以对Docker的环境进行设置,或者开始执行Docker命令了。

Docker环境的设置

右键单击系统托盘上的小鲸鱼图标,选择Settings菜单:

此时将打开Settings对话框:

该对话框主要包含了针对运行Docker Daemon的虚拟环境的配置,以及对Docker Daemon的配置。包括:

  • Shared Drivers:可以将主机(也就是Windows机器)中的驱动器共享到Docker Container中
  • Advanced:用于配置运行Docker Daemon的虚拟环境的CPU和内存
  • Network:配置Docker的网络环境
  • Proxies:代理的配置
  • Docker Daemon:使用JSON格式的设置,对Docker Daemon进行配置,类似于在Linux环境中使用conf文件对Docker进行配置

其实,Docker for Windows的安装过程会在Hyper-V中创建一台用于运行Docker Daemon的Linux虚拟机,这个对话框中的很多配置也就是针对该虚拟机所作出的配置。当配置发生更改后,Docker for Windows会重新启动(小鲸鱼背上的小方块又会动起来),这个过程其实就是这台Linux虚拟机的配置进行动态调整和重启的过程。例如,从下图可以看到,我将我自己的Docker设置为1个CPU和1GB的内存,这个配置会应用到Hyper-V的这台虚拟机上:

如果在Windows 10以前版本的Windows中安装Docker Toolbox,就需要确保Windows系统支持硬件虚拟化技术(HVT):

  • 如果是使用的Windows 8或者8.1:在任务管理器中,选择“性能”标签页,然后在CPU一栏,查看“虚拟化”(Virtualization)一项是否已经启用
  • 如果是Windows 7,请下载并执行Microsoft Hardware-Assisted Virtualization Detection Tool来查看系统是否满足条件

同时,还需要确保Windows系统是64位的。有关Docker Toolbox的更多信息,请参考官方网站的详细说明

运行Docker命令

在Docker for Windows成功启动后,就可以在Windows命令提示符下执行Docker命令了,也可以在Power Shell中执行Docker命令,看个人喜好吧。Docker CLI的体验和Linux下是一样的。

使用Docker for Windows在容器中运行ASP.NET Core Web API应用程序

我们仍然使用前面这篇文章中所发布的那个ASP.NET Core Web API应用程序,也仍然使用那个Dockerfile文件。现在,首先确保Dockerfile文件与发布出来的DockerWebAPI应用程序的文件都在同一个目录下:

然后执行:

1
docker build -t daxnet/docker-webapi .

将看到以下结果(当然,之前已经执行过一次了,所以基本上每一步的Image都是从缓存里取的):

与Linux下编译Docker Image相比,这里多了一个安全警告。这是因为我们是在Windows下使用部署在非Windows中的Docker服务来完成的Image的编译生成,两套系统中的文件权限设置不同。Docker for Windows建议在编译生成的Image上对文件的权限进行检查以确保安全。

接下来测试一下刚刚生成的Docker Image。执行:

1
docker run -it -p 8080:5000 daxnet/docker-webapi

将得到下面的效果:

测试一下:

效果跟前一篇文章的效果一样。

总结

本文对Docker for Windows进行了简单的介绍,并使用上一篇文章的案例,在Docker for Windows上运行了ASP.NET Core Web API应用程序。后文我还将介绍有关Docker使用的一些内容,还会继续结合ASP.NET Core Web API来讲解RESTful服务的容器化(Dockerization)与部署。

Docker for Windows的更多相关文章

  1. Docker for Windows使用简介

    在上一篇文章中,通过演练指导的方式,介绍了在Docker中运行ASP.NET Core Web API应用程序的过程.本文将介绍Docker for Windows的使用. 先决条件 前两周时间,Do ...

  2. 关于docker在windows环境下运行的第一次体验

    关于docker在windows环境下执行的原理 1.1.           首先是Docker Quickstart启动,如果在虚拟机Oracle VM VirtualBox不存在default虚 ...

  3. 初识Docker和Windows Server容器

    概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...

  4. 解决 docker on windows下网络不通

    问题:公司有一台闭置的windows服务器,于是想利用起来,但是在启动容器后始终无法通信成功. 研究: 1. 发现安装包中包含virtualbox, 于是怀疑windows下的docker是在virt ...

  5. ASP.NET Core 2.0 in Docker on Windows Container

    安装Docker for Windows https://store.docker.com/editions/community/docker-ce-desktop-windows 要想将一个ASP. ...

  6. Docker for Windows 使用入门

    欢迎来到Docker for Windows! Docker是用于创建Docker应用程序的完整开发平台,Docker for Windows是在Windows系统上开始使用Docker的最佳方式. ...

  7. Windows 10 安装 Docker for Windows

    Docker for Windows是Docker社区版(CE)应用程序. Docker for Windows安装包包括在Windows系统上运行Docker所需的一切. 本主题介绍了预安装注意事项 ...

  8. docker for windows & dotnet core app

    Step 1: 安装docker for windows Step 2: 从github 上 clone 源代码:https://github.com/dotnet/dotnet-docker-sam ...

  9. 学习docker on windows (1): 为什么要使用docker

    为什么要用Docker? 如果我们想使用某种pc软件, 那么在互联网上查找并安装软件的流程大致如下图: 那么这就有几个问题要弄清楚: 从哪里获得软件 App Store Linux的包管理 从某些网站 ...

随机推荐

  1. 向Int数组插入随机1到100

    这是一个经典的面试题,考察了几个知识点 下边的代码是传统经典的做法 ]; ArrayList myList=new ArrayList(); Random rnd=new Random(); ) { ...

  2. (转载)PHP删除数组中的特定元素的代码

    (转载)http://www.jb51.net/article/30689.htm 我们知道,PHP没有提供专门删除一个特定数组元素的方法.但是可以通过unset()函数来完成这种要求比如下面的程序: ...

  3. Exception starting filter struts2 java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor

    按教程,使用Convention插件进行配置 教程中说只要加入struts2-convention-plugin-2.3.4.1.jar这个jar包就可以使用. 按照这种方法部署后,启动tomcat报 ...

  4. C#中用PadLeft、PadRight 补足位数

    在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddi ...

  5. org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.

    No action config found for the specified url url路径下找不到action,原因是stuts-config.xml文件配置错误. demo的项目文件如下: ...

  6. 2份能用的log4j.xml

    1 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration ...

  7. swift 深入理解Swift的闭包

    我们可用swift的闭包来定义变量的值. 先来一个简单的例子大家先感受感受. 定义一个字符串的变量的方法: 直接赋值 var str="JobDeer" 还可以用闭包的方式定义: ...

  8. 【剑指offer】链表倒数第k个节点

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25662121 在Cracking the Code Interview上做过了一次,这次在 ...

  9. GBK编码和UTF-8编码互转的大坑

    这几天遇到一个BUG,问题很简单,解决却花了3.4天,特意记录下来. linux环境下,将默认编码设置为GBK以后,运行GBK编码的脚本,调用一个Java的jar包,然后总jar包中返回GBK字符串. ...

  10. table的border-collapse属性与border-spacing属性

    table border-collapse:collapse; 表示边框合并在一起. border-collapse:separate;表示边框之间的间距,间距的大小用border-spacing:p ...