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 ...
随机推荐
- 读《大话设计模式》——应用策略模式的"商场收银系统"(WinForm)
策略模式的结构 这个模式涉及到三个角色: 环境(Context)角色:持有一个 Strategy 类的引用.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现.此角色给出所 ...
- java 面向对象(二十六):枚举类的使用
1. 枚举类的说明:* 1.枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类* 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式. ...
- The Modules of Event-driven
常用的时间驱动模型(Windows和Linux都有)有三种: 1.select 对于读(Read)事件.写(Write)事件和异常(Exception)事件分别创建事件描述符集合,分别用来收集读事件的 ...
- ASP.NET Core策略授权和 ABP 授权
目录 ASP.NET Core 中的策略授权 策略 定义一个 Controller 设定权限 定义策略 存储用户信息 标记访问权限 认证:Token 凭据 颁发登录凭据 自定义授权 IAuthoriz ...
- 07-Python面对对象初级
一.简介 面对过程编程: 根据操作数据的函数或语句块来设计程序. 面对对象编程:把一些函数,数据,方法和功能结合起来,用“对象”包裹组织程序的一种方法. 类和对象是面向对象编程的两个主要方面.类创建一 ...
- 太实用了!自己动手写软件——GUI编程
这几天我有一个想法就是将我之前做测试写的一些协议脚本(如:ssh.FTP.SMTP.MySQL.Oracle等)综合在一起做一个密码PJ器,这么多的协议放在一起,每个协议都有自己特殊的参数,如果还是和 ...
- 第一章:Activity的生命周期和启动模式
Activity是Android中四大组件之首,所以需要重视,尤其是启动方式,在AndroidManifest.xml中的注册信息 (一)Activity的生命周期 1.1.1 正常情况下的生命周期 ...
- 从Excel(CSV)文件导入数据到Oracle
步骤: 1.准备数据:在excel中构造出需要的数据2.将excel中的数据另存为文本文件(有制表符分隔的)3.将新保存到文本文件中的数据导入到pl*sql中在pl*sql中选择tools--text ...
- Zabbix4.x如何安全传输数据
由于设备都在混合云,所以不少数据传输是通过公网,这样极大的增加了危险性,所以在Zabbix数据传输这块则进行PSK安全认证,由proxy主动收集agent数据后统一发送给server,这样只需要对pr ...
- Codeforces1379-题解
很久以前,申蛤申请了一个cf号叫 wzxakioi 有一天,戌蛤带着申蛤用这个账号打了一场div3,然后它的rating超过了shzr 之后申蛤又用这个号打了三场div2,于是 CF1379C 题意 ...