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 ...
随机推荐
- MCU 51-2 LED and Digital tube Test
点亮LED实验: #include <reg52.h> sbit LED1 = P1^; sbit LED2 = P1^; sbit LED8 = P1^; void main() { L ...
- linux专题(五):常用的基本命令(三)文件内容查看
http://dwz.date/UDf 概述 Linux系统中使用以下命令来查看文件的内容: cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! n ...
- 微信小程序实战:表单与选择控件的结合
先上代码. login.wxml <mp-toptips msg="{{error}}" type="error" show="{{error} ...
- scss : div水平垂直居中
scss 是一个很好用的css预处理语言,有很多很好的特性. 比如 mixin. 我们可以像使用函数那样使用mixin. 比如写一个div水平垂直居中. 上代码. @mixin absolute_ce ...
- 谷歌浏览器扩展 crx 下载
下方服务可让国内成功下载谷歌浏览器.crx 扩展,如谷歌浏览器无法安装,可以使用终极解决方法,把.crx 解压缩,然后在扩展中心中开启 开发者模式然后选择加载已解压的扩展程序. 需要注意的是解压缩的文 ...
- 导出Telegram贴纸
如何导出Telegram的贴纸1.在Telegram中 @StickerSetBot 机器人2.输入 /newpack 开启机器人,会提示 OK now send me stickers or sti ...
- Python基础-异常
异常捕获 常见异常类型 Exception:顶级异常类,大部分异常类都是它的子类.SyntaxError:语法错误TypeError:类型错误ValueError:值错误NameError:找不到名称 ...
- python读取hdfs上的parquet文件方式
在使用python做大数据和机器学习处理过程中,首先需要读取hdfs数据,对于常用格式数据一般比较容易读取,parquet略微特殊.从hdfs上使用python获取parquet格式数据的方法(当然也 ...
- Dart中final和const关键字
final和const 如果您从未打算更改一个变量,那么使用 final 或 const,不是var,也不是一个类型. 一个 final 变量只能被设置一次,两者区别在于:const 变量是一个编译时 ...
- 为什么不应该使用goroutine id?
Goroutine id 的获取方式 之前做的项目中,会使用 goroutine-id(以下简称 goid) 作为日志中的一个标识参数.而 goroutine 的相关信息是不对外暴露的.想要获取 go ...