美文网首页
第一章节 认识docker

第一章节 认识docker

作者: 小银杏 | 来源:发表于2017-09-29 18:16 被阅读4次

    docker是什么?

    docker实际是个进程管理工具,类似于pm2,但不同的是pm2主要用来管理node/python等的进程,而Docker实际上不光管理进程,还实现了进程运行环境与宿主的隔离,使其表现出来就像运行在虚拟机当中一样。但较于虚拟机有本质的区别,尤其是性能上面以及与宿主进行数据交换等都不同。虚拟机是完整的虚拟出一整个系统基础设施出来,会造成很多不必要的性能浪费,而docker则是直接共享宿主机的所有资源,包括网络,硬盘,等等。只不过把不同应用使用的资源进行了隔离。

    与此同时,docker还带来了一些理念,帮助应用开发者更好的实现应用的可移植可扩展,单一环境等特性。

    docker能解决什么问题?

    1、环境和部署问题

    现实的环境当中,环境是个特别麻烦的东西,比如不同版本的nginx/node/pm2问题,应用运行的端口分配,环境变量,配置文件等等。不同的目录访问读写权限等。扩展的安装等等。不同版本环境依赖的项目,以及不同时期的项目,新的老的旧的。

    2、弹性扩展

    第一章节 认识docker

    A、对于那种“秒杀”类应用,典型特点是 瞬间并发流量高,一旦高并发过去之后。基本就没有什么流量了。此时适合于提高“高速缓冲区”的节点数,此处的节点数越多,越能抗瞬间并发流量。

    B、对于那种持续高流量的应用,例如tracker等,即可通过提高“高速缓冲区”的节点数,增加数据容量,也可提高“Agent Robot”的节点数,加快数据的传输,降低缓冲区压力,而robot处理的越频,则数据库的压力将持续增加,此时Robot的节点数增多,有序的持续的对数据库进行写入,避免数据库有空闲时间。最大程度的榨干数据库的能力。

    C、如果AB方案的提升仍然不能满足高速的业务需求,则瓶颈主要在数据库写入上,可通过 主从分库和提升机器CPU与内存来缓解数据库压力。如果仍不能满足需求,则需要更改数据库结构,分库分表以及归档处理。

    3、简化运维

    有个运维跟我说过,在他们这里就没有什么(应用)是稳定的。在计算机当中,确实没有什么是稳定的,随时随地可能遇到,比如老鼠、小猫、蟑螂把电线给咬了,蓝翔实习把电缆给挖了。网线松了,硬盘掉电进灰了。静电把内存给烧了,被雷劈了。这是硬件上的风险,

    软件上的风险,诸如,端口冲突了,软件之间不兼容了,莫名其妙自己崩溃了。连接丢失了,网络超时了。等等等。而本身的部署环境比较复杂,docker的隔离带来的好处是比如nginx运行着,突然不行了,可以瞬间重新启动一个新的容器,把老的给替掉,而不用担心遗留问题,不必担心两个应用端口冲突,因为端口都是由宿主分配的,不必担心不同人的电脑环境不一致了,docker可以保证所有人的电脑运行的容器都是在同一个环境下的。不必再担心一台电脑上安装有两个或以上的nginx或两个以上的jenkins,新的旧的不知道哪个是对的。不敢乱动,因为担心弄坏。任何熟悉docker的人都能很快的用相同的命令管理这一切的软件,无论是项目还是软件,jenkins,dns,nginx,redis,gitlab,node通通收在容器内,即可做为项目运行,也可以单独的做为一个固化的运行或编译环境。

    4、更加的安全

    因为与宿主的隔离,对于权限问题,所有的应用都被封在内部网络,病毒木马和黑客无法突破容器内的限制,除非你主动开放,那么它很难成功发起攻击。

    docker的安装和环境选择?

    一、为什么应该使用linux安装部署而不是直接安装在windows/mac上

    docker本身只支持linux系统,其运行在windows/mac上是通过建立一个虚拟机运行的,对机器的资源消耗非常大,新版本或许可以原生支持,但仍然对机器消耗大,且存在很多不稳定因素。所以建议,直接安装在linux上,并且固定在linux发行版centos7上面,不同的发行版,都不太一样,有很多坑。。

    二、centos安装时的注意事项

    centos的安装,直接通过一键安装脚本。一般没有其它特别的问题,有可能因为docker-registry的网络问题导致不能拉取镜像,此时换个时间段拉取,或建立私有docker-registry,存储镜像。

    # 一键安装部署脚本

    sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

    [dockerrepo]

    name=Docker Repository

    baseurl=https://yum.dockerproject.org/repo/main/centos/7/

    enabled=1

    gpgcheck=1

    gpgkey=https://yum.dockerproject.org/gpg

    EOF

    sudo yum install docker-engine -y

    service docker stop

    service docker start

    curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

    chmod +x /usr/local/bin/docker-compose

    docker及docker-compose常用命令介绍

    docker exec -it 832dcf5f9ec1 /bin/bash 进入一个运行中的容器

    docker exec -it 832dcf5f9ec1 /bin/sh

    docker save kemao-dev/gitlab-runner > kemao-dev--gitlab-runner.tar.gz 导出镜像

    Docker load < xx.tar 导入镜像

    Docker export xx> xx.tar 导出容器

    Docker import

    相关文章

      网友评论

          本文标题:第一章节 认识docker

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