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 ...
随机推荐
- 使用命名管道承载gRPC
最近GRPC很火,感觉整RPC不用GRPC都快跟不上时髦了. gRPC设计 刚好需要使用一个的RPC应用系统,自然而然就盯上了它,但是它真能够解决所有问题吗?不见得,先看看他的优点: gRPC是一种与 ...
- Python之介绍、基本语法、流程控制
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- dataframe一次小实验
老师搞不清,一个ndarray[df['columns']==a],返回的是什么,目前看来应该是df[] == a 的索引
- Vue中使用websocket
<template> <div class="test">websocket demo</div></template> < ...
- bzoj2292【POJ Challenge 】永远挑战*
bzoj2292[POJ Challenge ]永远挑战 题意: 有向图,每条边长度为1或2,求1到n最短路.点数≤100000,边数≤1000000. 题解: 有人说spfa会T,所以我用了dijk ...
- someone you loved 歌词翻译
I'm going under and this time I fear there's no one to save me 我要放弃了,这一次我怕没有人可以拯救我. This all or noth ...
- Java对象创建模式
创建Java对象时,对于可为空的属性,创建对象的时候有3种模式:重叠构造器模式.JavaBeans模式.Builder模式(推荐).Stream模式(推荐). ...
- 利用cublasHgemm来实现cublasHgemv
前几天做half量化时发现cublas竟然没有提供half版本的矩阵-向量乘,也就是half版本的cublasHgemv.自己写一个又太麻烦,重点是精度和耗时不一定比cublas提供的要好,不过cub ...
- 阿里云内部超全K8s实战手册!超全127页可下载
一直关注云计算领域的人,必定知道Docker和Kubernetes的崛起.如今,世界范围内的公有云巨头(谷歌.亚马逊.微软.华为云.阿里云等等)都在其传统的公共云服务之上提供托管的Kubernetes ...
- 软件测试必备技能,带你学习jmeter!
一:jmeter用户变量设置: 1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化: 两 ...