Docker初探之Windows篇
一、什么是Docker?
Docker是一个开源的应用容器引擎,可以轻松地为任何应用创建一个轻量级、可移植、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括虚拟机和其他平台。
我们可以将自己的应用以及依赖的环境一起打包到一个容器中,然后这个容器就可以很容易的放到其他机器上运行。而且非常易于装载、复制、移除。
以前的部署方式就是每次部署应用的时候都需要在电脑上重复地走一下部署流程,比如下载安装环境、依赖框架、搭建服务等。但是有了Docker容器技术,我们无需重复的操作,只需要一次打包,处处运行,而且每个容器之间都是隔离的环境,互不影响。
二、虚拟机和Docker对比

在上图中,容器是一个应用层抽象,用于将代码和依赖资源打包在一起。多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。与虚拟机相比,容器占用的空间较少,瞬间就能完成启动。
虚拟机则是一个物理硬件层抽象,用于将一台服务器变成堕胎服务器,管理程序允许多个虚拟机在一台机器上运行,每个虚拟机都包含一个独立的操作系统、一个或多个应用、必要的二进制文件和资源库。因此占用大量空间,启动也十分缓慢。

由于容器所需要的资源要比虚拟机少(虚拟机需要一个完整的系统环境),所以它们易于部署且快速启动。
| 特性 | 容器 | 虚拟机 |
| 启动速度 |
秒级 几秒内就可以启动 |
分钟级 有时候需要长达十几分钟才能启动,具体看环境安装资源大小而定 |
| 存储空间占用 | 一般为MB为单位 | 需要的空间至少G单位的空间 |
| 性能 | 接近原生,基本没有其他的消耗 | 操作系统会占用较多的资源 |
| 系统支持量 | 一台普通的服务器可以支持上千个容器 | 一般最多支持几十个虚拟机,而且看电脑配置而定 |
三、抛开虚拟机面向Docker容器
现在大应用不断增加,容器化是技术发的必然趋势,容器技术也会不断地进化,所以我们要把容器技术用起来,就从Docker开始!
有很多小伙伴都觉得用这个有一定地门槛,安装太麻烦,当然,这也是误区。
有些人认为用Docker很麻烦,只有大公司用,或者学习这个成本很高,认为对现有系统、架构改造太大,成本太高等等,这些都是误区。
四、Docker的三个基本概念
1、镜像
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需要的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建后也不会改变。
我们可以简单的理解,镜像就像是一个什么环境、依赖资源、文件和你的应用程序都跟你打包的一个文件系统。就类似于操作系统一样,操作系统也是由C盘下的Windows文件夹和其他系统文件组成的一样,要运行操作系统,肯定是需要这些资源、文件
、依赖都存在,你可以理解为这一整套文件系统就是镜像。
2、容器
容器和镜像的关系就像是面向对象程序中的实例和类一样,类是静态的,实例是通过类运行起来才有的。运行起来的程序才有进程。
容器你可以理解为运行起来的镜像,比如,一套系统程序也是由很多个文件、资源、依赖组成,那么把它完整的一套说法类似叫镜像。如果系统程序没有运行起来,它其实也是放在硬盘上的系统文件而已。而容器,就是表示把系统程序运行起来,相当在电脑里开一个进程,运行起来的系统程序我们称之为容器。
3、仓库
镜像我们构建好后,可以很容易的在当前的操作系统上运行,但是如果需要在其他服务器上使用这个镜像,我们就需要一个集中存放、分发镜像的一个服务中心。
就类似于我们开发了一套程序,文件、依赖、资源都打包在一起了,这样很快的可以在本机运行,但是你要用,我是不是需要上传到一个软件管理服务网站,你下载就行了,对吧。如果另外一个人也有一套程序给你用,那么那个人也可以先上传到软件管理服务网站,然后你下载,那么这个软件管理服务网站,在Docker里叫做仓库服务中心,当然,上面举的例子不一定符合Docker概念,但可以作为理解仓库意思的参考,Docker里的仓库是放镜像的,与我们传统的还是有区别的。
每个仓库可以包含多个标签,每个标签对应一个镜像,通常一个仓库包含同一个软件不同版本的镜像,而根据标签来区分软件的各个不同版本。如果我们要使用仓库里的镜像,一般都会指定一个标签用于指定软件版本,如果不指定标签则用最新的一个版本。
五、下载安装和运行Docker(这里用Docker提供的Docker for Windows为例,Docker ToolBox适用于Windows 10以下的系统,我本人是Window 10)
Docker 是一个应用容器引擎,肯定需要安装才能使用。
Docker可以运行在Linux上,也可以运行在Windows上,在这里,目前以Windows环境为例,后面再说Linux上的Docker使用,一般在Linux上运用Docker居多。
要在Windows上运行Docker,需要满足下面几个条件:
1、Windows 10 64位:Pro、Enterprise或Education (Build 14393或更高版本)
2、在BIOS中启用虚拟化。一般默认是启用的
下载安装后需要重启电脑,如果运行遇到报错可以根据错误提示来进行修改环境,常见的如下:
启用Hyper-V

下载地址:https://pan.baidu.com/s/12XeL11JHxsCVvOCxM3r5gA 提取码: n3gw (官方地址有点慢,这里就不放地址了,直接进入Docker官网即可)
安装成功后,桌面会有一个Docker图标:

双击运行后,右下角会多出一个托管图标:

右键:

点击Settings进入设置面板:

界面左下角有个绿色图标+Docker running,表示Docker已经正常运行起来了。
在后面的使用中,我们会用到很多不同的镜像,但是由于Docker 提供的镜像仓库中心是国外地址,下载镜像对于我们来说就很慢,我们可以通过修改Docker配置文件或图形化操作来添加了个镜像加速配置。我们国内的有很多大厂提供了容器加速地址,比如阿里云、腾讯等。
在这里我用阿里云的:https://mtlxrshz.mirror.aliyuncs.com
如果是Windows 10的用户则直接以下操作:

修改后重启Docker服务即可。
重启后我们可以小试一下:
打开Windows PowerShell 工具

打开后,输出命令 docker Image ls 表示输出当前已经存在的镜像列表如:

这是我本机的,我上面装载了rabbitmq、mysql和redis常用的服务工具镜像。
好了,后续我就接着为大家介绍Docker的常用命令、如何拉取镜像和运行容器等。
Docker初探之Windows篇的更多相关文章
- 首创诠释docker的Formulas: Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation = super machine (docker从零开始时记,Follow me and you go)
不少人从来没有接触过docker,或者仅仅是听说过,本文试图从原点开始深入了解docker的全貌,剖析docker的基础概念,让我们一起开始docker之旅~~~ 开场:什么是docker docke ...
- 深入剖析Windows专业版安装Docker引擎和Windows家庭版Docker引擎安装的区别
原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 公司使用的电脑是Windows专业版,所以配置本机的Docker时会方便许多,后续由于需 ...
- Qt全局热键(windows篇)
Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个 ...
- Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对 ...
- Node.js安装及环境配置之Windows篇
Node.js安装及环境配置之Windows篇 一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1. ...
- solr6.6初探之分词篇
关于solr6.6搭建与配置可以参考 solr6.6初探之配置篇 在这里我们探讨一下分词的配置 一.关于分词 1.分词是指将一个中文词语拆成若干个词,提供搜索引擎进行查找,比如说:北京大学 是一个词那 ...
- Docker系列之入门篇
Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)
C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇) 名词解释:apxs apxs is a tool for building and installing ext ...
随机推荐
- JVM 专题十八:垃圾回收(二)垃圾回收相关算法
1. 标记阶段 1.1 引用计数算法 1.1.1 对象存活判断 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象.只有被标记为己 ...
- 数据可视化之powerBI技巧(十二)学会这几个度量值,轻松获取前N名
数据中的明细项一般都有很多,可是我们关注的往往只是前几名,所以在报表中只展示关注的部分,就十分常用. 有了上篇(这几个示例,帮你深入理解RANKX排名)关于排名的铺垫,仅显示前N名就简单多了. 依然以 ...
- 数据可视化实例(十四):面积图 (matplotlib,pandas)
偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...
- 【设计模式】MVC、MVP、MVVM
1.MVC模式: /** 模擬 Model, View, Controller */ var M = {}, V = {}, C = {}; /** Model 負責存放資料 */ M.data = ...
- 关于Mint-UI中loadmore组件的兼容性问题
源代码 遇到的问题 写完了之后数据加载,渲染等等都是没有问题的,但是测试总是提上滑刷新不能用,因为是远程开发,测试提就得改,看代码看文档,看半天看不出来问题,想到了兼容性问题,发现也有人遇到这个坑.安 ...
- 怎样才能做好软件测试——Python自动化测试工程师七年感悟
即使不想在文章的开头过分的正经严肃,但这是一个十分正经技术类规划类的分享.不讲笑话也不讲故事,直接进入主题. 如何学好软件测试?反推一下作为一名优秀的软件测试工程师需要什么能力. 学习测试讲究实践 ...
- Linux下显示运行时链接(运行时加载)
目录 介绍 如何加载动态库 dlopen() 第一个参数: 被加载动态库的路径 第二个参数: flag表示函数符号的解析方式 dlopen 返回值 dlsym() 参数: 返回值 符号优先级 dler ...
- sqlserver——merge用法
merge集插入,更新,删除于一体,如果要对一个表同时进行插入,更新,删除2个或3三个操作.效率要高于单个操作. merge into tableb b --被操作表using (select id, ...
- 怎么训练出一个NB的Prophet模型
上篇<神器の争>主要是介绍Prophet的特点以及prophet入门的一些注意事项,但离真正的实际运用还有段距离.本篇主要讲解实际运用中Prophet调参的主要步骤以及一些本人实际经验. ...
- 【requests库】七个主要方法
本文主要介绍requests库访问http的七个主要方法:get.head.post.put.patch.delete. requests.get()方法 get方法用于获取指定url的HTML网页, ...