Docker 是什么

这里先用官方的解释:

A standardized unit of software 一个软件的标准化单位

这里我从一个身边每天都在用的例子来讲解什么是Docker吧。

我想在看文章的你,有可能使用的是iPhone手机吧,不是也不要紧,但我想iPhone最盛行的时候,应该听过iPhone越狱这件事,那我们从越狱说起吧。

为什么iPhone要越狱,而Android却不要

越狱本质上,就是获取操作系统的root权限,获取更高的权限操作更多的内容。而苹果官方是禁止我们这样做的,最大的原因就是他破坏了iPhone的沙盒体系,让他高度维护的安全体系全然失效,如果精明的小伙伴应该听过docker也有沙盒 SandBox的概念。

而 SandBox 理念,是让程序运行在操作系统受限制的环境中,像iPhone对于App的限制,就是每个App都有一个独立的文件夹,存储App产生的用户信息文件,完全不需要担心这个路径被其他的App恶意访问。

这里找了一张网图,这里面每个不规则的ID文件夹,对应的就是一个App,每个App只能访问自己的文件夹,由iOS的系统管控:




docker 无法下载node镜像_mysql


什么是Docker

这里我们在回到Docker里面,作为一个后端的工程师,我们维护的APP 是一个个独立的后端服务或者站点,我们这些程序共用一个操作系统的资源,就会面临以下的问题:

  1. 一个服务占用了大量的内存或者CPU,导致其他的服务不资源可用。
  2. 对于某些需要不同操作系统的程序,没有办法同时运行在一个机器上。C#的程序员,需要把程序跑在Windows服务器上面,而很多中间件组件,通常都希望跑在Linux操作系统上面。
  3. 程序的文件系统或者网络都是同一个,会产生一些文件访问的冲突或者网络端口号的冲突。
  4. 等等

那 Docker 就是来帮助我们解决这些问题的。

如果让我来说,Docker是什么,那我会说: Docker 是一个包含了程序所需的操作系统,帮助我们运行,我们需要的软件,并帮我们对每个程序加以限制的工具

而且我觉得,Docker最大的优势就是他的插拔特性,他可以像安装一个App一样,安装一个后端服务,也可以像卸载一个App一样,删除一个程序。就是下面两个命令,而且几乎不需要担心程序残留的问题。

docker run

docker delete

有多方便,我安装一个mysql数据库来举例,如果用以前的安装方式,我们需要:

到官网下载对一个操作系统的安装包

安装在系统内部,安装过程中,程序还会注册各种我们未知的内容

执行对应的cli开启结束服务

防止端口占用,还要仔细配置

而使用了Docker之后:

  • 指定容器内的操作系统就可以,不需要关心跟你电脑不匹配的问题
  • 安装过程全部由虚拟出来的操作系统负责,不影响你的电脑内任何内容
  • docker可以帮助我们映射端口,从Docker上面可以一键查看

执行的安装命令:

Windows:

docker run -p 3306:3306 --name mysql 
-v D:mysqlconf:/etc/mysql/conf.d/ 
-v D:mysqllogs:/logs 
-v D:mysqldata:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Mac:

docker run -p 3306:3306 --name mysql 
-v /mysoft/mysql/conf/:/etc/mysql/conf.d/ 
-v /mysoft/mysql/logs:/logs 
-v /mysoft/mysql/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=123456

-d mysql:5.7

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

聊了这么多它的好处,让我们开始安装Docker吧

Docker 安装:

Windows版本:

  1. 由于Docker 在Windows上执行,需要一定的支持,我们先检查一下对应的配置。
  • 打开你的任务管理器,点开性能一栏,查看我下面标记的地方是否是开启状态(中文是虚拟化),如果不是的话,请大家重启电脑,进入到BIOS里面,开启这个配置,具体的可以到百度查询,不是很复杂


docker 无法下载node镜像_mysql_02


  • 在开始面板搜索Windows Features,打开后,查看Hyper-V是否开启,如果不是的话请开启一下,可能需要重启电脑,这个Hyper-V是Windows自带的虚拟机,类似于VirtualBox,VMVare一类的软件:


docker 无法下载node镜像_mysql_03


2.下载安装包,这个到官网 进行下载就可以了(目前需要注册一个Docker的账号,按照提示自主注册即可)。

3.后续的示例,可能需要使用到git,如果没有的话,请到对应的网站下载并安装。

4.启动桌面安装好的Docker图标,打开一个终端(CMD),输入docker -v, 输出类似下面的内容就算成功了(撰文的Docker版本是19.03.5):

Docker version 19.03.5, build 633a0ea

Mac 版本

Mac环境的安装就比较简单了,可以一键安装,没有Windows那么麻烦

  1. 通过homebrew 命令安装:brew cask install docker
  2. 通过官网的包安装,直接下载即可

配置项

强烈建议大家配置一些相关的信息:

  1. 由于国内不能访问国外的服务器,Docker在使用的过程中需要下载一些包,所以建议配置国内的仓库源(这里贴Mac的图,位置在Perferences->Daemon,Windows是在Setting->Daemon里面):


docker 无法下载node镜像_docker 无法下载node镜像_04


相关的资源链接: