美文网首页
2020年了,跟我一起学Docker吧—— Docker 简介以

2020年了,跟我一起学Docker吧—— Docker 简介以

作者: 雨生_ | 来源:发表于2020-01-02 18:15 被阅读0次

    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的系统管控

    image

    什么是Docker

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

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

    那 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版本:

    1. 由于Docker 在Windows上执行,需要一定的支持,我们先检查一下对应的配置。

      • 打开你的任务管理器,点开性能一栏,查看我下面标记的地方是否是开启状态(中文是虚拟化),如果不是的话,请大家重启电脑,进入到BIOS里面,开启这个配置,具体的可以到百度查询,不是很复杂
      • 在开始面板搜索Windows Features,打开后,查看Hyper-V是否开启,如果不是的话请开启一下,可能需要重启电脑,这个Hyper-V是Windows自带的虚拟机,类似于VirtualBox,VMVare一类的软件。
    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里面):
      image

    相关的资源链接:

    下一节,会一起执行我们的第一个容器。喜欢的同学请关注我的公众号 二进制操盘手

    相关文章

      网友评论

          本文标题:2020年了,跟我一起学Docker吧—— Docker 简介以

          本文链接:https://www.haomeiwen.com/subject/deiooctx.html