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官网即可,也可以用阿里云提供的:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/)
安装成功后,桌面会有一个Docker图标:
双击运行后,右下角会多出一个托管图标:
右键:
点击Settings进入设置面板:
界面左下角有个绿色图标+Docker running,表示Docker已经正常运行起来了。
在后面的使用中,我们会用到很多不同的镜像,但是由于Docker 提供的镜像仓库中心是国外地址,下载镜像对于我们来说就很慢,我们可以通过修改Docker配置文件或图形化操作来添加了个镜像加速配置。我们国内的有很多大厂提供了容器加速地址,比如阿里云、腾讯等。
在这里我用阿里云的:https://mtlxrshz.mirror.aliyuncs.com
如果是Windows 10的用户则直接以下操作:修改registry-mirros节点。
修改后重启Docker服务即可。
重启后我们可以小试一下:
打开Windows PowerShell 工具
打开后,输出命令 docker Image ls 表示输出当前已经存在的镜像列表如:
这是我本机的,我上面装载了rabbitmq、mysql和redis常用的服务工具镜像。
好了,后续我就接着为大家介绍Docker的常用命令、如何拉取镜像和运行容器等(这个拉取镜像和运行容器的过程与我们平时的下载软件包并安装运行是多么的相似,但Docker却轻量、便捷得多)。