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应用程序的文件都在同一个目录下:

然后执行:

docker build -t daxnet/docker-webapi .

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

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

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

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)与部署。

相关文章:

  • docker4dotnet #1 – 前世今生 & 世界你好

  • docker4dotnet #2 容器化主机

  • docker – 你应该知道的10件事

  • ASP.NET Core Docker部署

  • docker4dotnet #3 .net猿和小鲸鱼的苹果山之旅

  • 我为什么用docker-compose来打包开发环境

  • Win10上运行Docker

  • 在docker中运行ASP.NET Core Web API应用程序

原文地址:http://www.cnblogs.com/daxnet/p/5788972.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pagehelper 不分页的解决方法

pagehelper 不分页的解 pagehelper PageHelper.startPage(1, 10);只对该语句以后的第一个查询语句得到的数据进行分页, 就算你在PageInfo pa new PageInfo("",对象);语句里面的对象是写的最终得到的数据,该插件还是只会对第一个查询所查询出来的数据进行分页 第一…

最近流行的12个笑话,好笑又有道理

来源 | 悦读文摘(ID:yueduwz) 01 一个盲人到亲戚家做客,天黑后,他的亲戚好心为他点了个灯笼,说:“天晚了,路黑,你打个灯笼回家吧!” 盲人火冒三丈地说&#x…

java 从jar包中读取资源文件

转载自 java 从jar包中读取资源文件 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找…

json常用的转换

一、json字符串与map的相互转换 首先要导入依赖&#xff0c;用的是fastjson依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.45</version> </dependency>json转map //第一…

JWT【JSON Web Token】 简述

JWT全称JSON Web Token[http://www.jwt.io/]&#xff0c;用于发送可通过数字签名和认证的东西&#xff0c;它包含一个紧凑的&#xff0c;URL安全的JSON对象&#xff0c;服务端可通过解析该值来验证是否有操作权限&#xff0c;是否过期等安全性检查。由于其紧凑的特点&#xff0…

Android增加自定义监听事件

适配器中 public interface ShippingDelOnClickListener {public void onClickListenerShippingDel(int position); }private ShippingDelOnClickListener mShippingDelOnClickListener;public void setShippingDelOnClickListener(ShippingDelOnClickListener shippingDelO…

BufferedInputStream与ImageInputStream

转载自 BufferedInputStream与ImageInputStreamBufferedInputStream读取图片文件&#xff08;jpg格式&#xff09;,但是图片大小在1M到200M之间都有&#xff0c;由于图片太大&#xff0c;不知道怎么处理好&#xff0c;谢谢各位大哥大姐教教小弟&#xff0c;现在只能读取1M以下读…

List自定义对象集合转List<Map<String,Object>>对象

一、List自定义对象集合转List<Map<String,Object>>对象 public static Map<String,Object> object2Map(Object obj) throws Exception{Map<String,Object> map new HashMap<String, Object>(16);Field[] fields obj.getClass().getDeclaredF…

又一大波笑到肾抽筋,笑出六块腹肌的段子

文章来源于网络&#xff0c;侵删 01 我有一个要强的妈妈&#xff0c;记得小时候&#xff0c;我妈骑自行车带我&#xff0c;我脚卡车轮里了&#xff0c;我妈感觉蹬不动&#xff0c;就站起来蹬。 长到两米算我输 02 “单身两年以上是什么体验&#xff1f;”&#xff0c; “单身20…

登录工程:传统 Web 应用中的身份验证技术

标题中 “传统 Web 应用” 这一说法也并没有什么官方定义&#xff0c;只是为了与“现代化 Web 应用”形成比较而自拟的一个概念。所谓现代化 Web 应用指的是那些基于分布式架构思想设计的&#xff0c;面向多个端提供稳定可靠的高可用服务&#xff0c;并且在需要时能够横向扩展的…

getSerializableExtra

Activity之间通过Intent传递值&#xff0c;支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[]&#xff0c;还有实现Serializable…

Java 读写图像

转载自 Java 读写图像Java中进行图像I/O&#xff08;即读图片和写图片&#xff0c;不涉及到复杂图像处理&#xff09;有三个方法&#xff1a;1. Java Image I/O API&#xff0c;支持常见图片&#xff0c;从Java 2 version 1.4.0开始就内置了。主页&#xff1a;http://java.sun…

powerdesigner在工作时用到的方法

一、所有表中name同步comment的方法&#xff1a; 操作步骤&#xff1a;工具>execute commands>Edit/Run script Option Explicit &#xff1b; 将下面脚本复制进去并执行 ValidationMode True InteractiveMode im_Batch Dim mdl the current modelget the current …

大数据项目实践:基于hadoop+spark+mongodb+mysql开发医院临床知识库系统

一、前言 从20世纪90年代数字化医院概念提出到至今的20多年时间&#xff0c;数字化医院&#xff08;Digital Hospital)在国内各大医院飞速的普及推广发展&#xff0c;并取得骄人成绩。不但有数字化医院管理信息系统&#xff08;HIS)、影像存档和通信系统&#xff08;PACS)、电子…

两个对象集合根据对象的某个属性进行过滤,返回不同的部分

例如&#xff1a; plants 和houses 两个集合&#xff0c;进行对比过滤&#xff0c;取出plants里和houses不同的部分&#xff0c;并返回。 List<ImprovedSeedPlant> plants improvedSeedPlantMapper.selectList(spWrapper); List<StudsheepSheepHouse> houses h…

简历

技术岗&#xff01; 那么你应该写什么&#xff1f; 简单的介绍项目的规模&#xff0c;有多少技术人员&#xff0c;是互联网项目还是企业软件&#xff0c;这些就可以了。 接下来你需要写关于项目技术的那部分。 项目用了什么框架&#xff1f;spring 还是struts2 ,持久化是用的是…

java drawimage()方法

转载自 java drawimage()方法图像使用的支持分布于java.applet, java.awt, 和 java.awt.image包中。每一个图像都用一个 java.awt.Image 对象表示。除了Image 类外&#xff0c;java.awt 包提供了其它的基本的图像支持&#xff0c;例如Graphics 类的 drawImage方法&#xff0c;…

老师不能把你怎样,但外面的世界可以!

来源 | 菁优网 本文是一位老师讲述的三段小故事&#xff0c;告诉各位家长及孩子&#xff1a; 亲爱的孩子&#xff0c;老师是不能把你怎样&#xff0c;但外面的世界可以。 1. 我有一个学生&#xff0c;喜欢钻研奥数&#xff0c;却走路慢慢吞吞总爱迟到&#xff0c;同学给他起了…

TagHelper是怎么实现的

众所周知&#xff0c;在asp.net core中编写Razor视图的时候&#xff0c;用了一种新的写法--TagHelper 那这个TagHelper是怎么回事呢? 首先来看看TagHelper的项目位置&#xff0c;它是位于Microsoft.AspNetCore.Mvc.TagHelpers。 如果看到project.json&#xff0c;可以发现&…

java电商面试介绍

写博客 前两个项目采用的是ssh框架搭建的&#xff0c;最近的项目采用的是ssm框架搭建的。在实际开发中&#xff0c;我觉得这两个框架&#xff0c;他们最大的区别在于hibernate与mybatis的区别。 Hibernate与mybatis相比较&#xff0c;mybatis更为轻便、灵活&#xff0c;容易…