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
这里我们在回到Docker里面,作为一个后端的工程师,我们维护的APP 是一个个独立的后端服务或者站点,我们这些程序共用一个操作系统的资源,就会面临以下的问题:
- 一个服务占用了大量的内存或者CPU,导致其他的服务不资源可用。
- 对于某些需要不同操作系统的程序,没有办法同时运行在一个机器上。C#的程序员,需要把程序跑在Windows服务器上面,而很多中间件组件,通常都希望跑在Linux操作系统上面。
- 程序的文件系统或者网络都是同一个,会产生一些文件访问的冲突或者网络端口号的冲突。
等等
那 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:\mysql\conf:/etc/mysql/conf.d/ -v D:\mysql\logs:/logs -v D:\mysql\data:/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版本:
-
由于Docker 在Windows上执行,需要一定的支持,我们先检查一下对应的配置。
- 打开你的任务管理器,点开性能一栏,查看我下面标记的地方是否是开启状态(中文是虚拟化),如果不是的话,请大家重启电脑,进入到BIOS里面,开启这个配置,具体的可以到百度查询,不是很复杂:
- 在开始面板搜索Windows Features,打开后,查看Hyper-V是否开启,如果不是的话请开启一下,可能需要重启电脑,这个Hyper-V是Windows自带的虚拟机,类似于VirtualBox,VMVare一类的软件。
- 打开你的任务管理器,点开性能一栏,查看我下面标记的地方是否是开启状态(中文是虚拟化),如果不是的话,请大家重启电脑,进入到BIOS里面,开启这个配置,具体的可以到百度查询,不是很复杂:
下载安装包,这个到官网 进行下载就可以了(目前需要注册一个Docker的账号,按照提示自主注册即可)。
后续的示例,可能需要使用到git,如果没有的话,请到对应的网站下载并安装。
启动桌面安装好的Docker图标,打开一个终端(CMD),输入
docker -v
, 输出类似下面的内容就算成功了(撰文的Docker版本是19.03.5):
Docker version 19.03.5, build 633a0ea
Mac 版本
Mac环境的安装就比较简单了,可以一键安装,没有Windows那么麻烦
- 通过homebrew 命令安装:
brew cask install docker
- 通过官网的包安装,直接下载即可。
配置项
强烈建议大家配置一些相关的信息:
- 由于国内不能访问国外的服务器,Docker在使用的过程中需要下载一些包,所以建议配置国内的仓库源(这里贴Mac的图,位置在Perferences->Daemon,Windows是在Setting->Daemon里面):
相关的资源链接:
下一节,会一起执行我们的第一个容器。喜欢的同学请关注我的公众号 二进制操盘手。