博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker:基础知识
阅读量:2067 次
发布时间:2019-04-29

本文共 2866 字,大约阅读时间需要 9 分钟。

docker介绍

引出docker:

问题1:

某IT部门要上线一个项目。常规操作,直接去线上服务器,拷贝一个tomcat,然后改端口号,然后部署应用到webapps文件夹下,重启就好。
一个服务器上可能会部署多个应用服务。如果某个应用出现问题,CPU100%,可能这个服务器上的其他应用也会出现问题。
对于一个大型应用拆分为几十个微服务,分别交由不同的团队开发,不同团队之间水平参差不齐。如果还采用这种部署方式,你的应用可能会因为另一个团队的应用发生意外。因部署在了同一台服务器上,导致全部出现问题。

问题2:

开发和线上代码(同一套代码)问题。开发阶段部署一套软件环境,测试人员在开发中测试没有问题,运维进行部署。但是正式部署到服务器时,发生了问题(启动参数、环境问题、漏配了参数)等意外。

问题3:

随着微服务技术的兴起,一个大的应用需要拆分成多个微服务。多个微服务的生成,就会面临庞大系统的部署效率,开发协同效率问题。然后通过服务的拆分,数据的读写分离、分库分表等方式重新架构,而且这种方式如果要做的彻底,需要花费大量人力物力。可能需要部署很多个服务器。

问题4:

持续的软件版本发布/测试项目。到线上环境的集成

什么是docker

1、 简化程序:

docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入docker 中进行管理。方便快捷已经是 docker 的最大优势,过去需要用数天乃至数周的 任务,在docker 容器的处理下,只需要数秒就能完成。

2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。docker 帮你 打包你的纠结!比如 docker 镜像;docker 镜像中包含了运行环境和配置,所以 docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3、节省开支

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,docker 改变了高性能必然高价格的思维定势。docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式

4、持续交付和部署

对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。使用 docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像

5、更轻松的迁移

由于 docker 确保了执行环境的一致性,使得应用的迁移更加容易。docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

Docker的应用场景

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

开发一个软件、有一台服务器(Linux)、安装相应的开发环境

  • IaaS:(Infrastructure-as-a-Service)(基础设施即服务)

    基础设施即服务:

    比如:一个人要做菜,只有一个灶台:
    我要做的就是:
    1. 买厨具
    2. 买菜
    3. 自己操作做菜

  • PaaS:(Platform as a Service)(平台即服务)

    平台即服务: 提供好了灶台和厨具

    我只需要做:
    1. 买菜
    2. 操作做菜

  • SaaS:(Software-as-a-Service)(软件即服务)

    软件即服务:点外卖

docker和虚拟机总结

名词解释:infrastructure (基础服务)硬件  Host OS 主机操作系统VM 虚拟机   Hypervisor 虚拟层程序
  1. 实现原理技术不同
    虚拟机是⽤来进⾏硬件资源划分的完美解决⽅案,利⽤的是硬件虚拟化技术,如此VT-x 、AMD-V会通
    过⼀个 hypervisor 层来实现对资源的彻底隔离。
    而容器则是操作系统级别的虚拟化,利⽤的是内核的 Cgroup 和 Namespace 特性,此功能通过软件
    来实现,仅仅是进程本身就可以实现互相隔离,不需要任何辅助。
  2. 使用资源不同
    Docker 容器与主机共享操作系统内核,不同的容器之间可以共享部分系统资源,因此更加轻量级,
    消耗的资源更少。
    虚拟机会独占分配给⾃⼰的资源,不存在资源共享,各个虚拟机之间近乎完全隔离,更加重量级,也
    会消耗更多的资源。
  3. 应用场景不同
    若需要资源的完全隔离并且不考虑资源的消耗,可以使用虚拟机。
    若是想隔离进程并且需要运行大量进程实例,应该选择 Docker 容器。

在这里插入图片描述

Docker总结

  • Docker是世界领先的软件容器平台。

  • Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docke最初实现是基于LXC。

  • Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件

  • 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

  • Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题;——一致的运行环境

  • 可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间

  • 避免公用的服务器,资源会容易受到其他用户的影响。——隔离性

  • 善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展

  • 可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。——迁移方便

  • 使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署

转载地址:http://czumf.baihongyu.com/

你可能感兴趣的文章
C#技巧:网页表单自动填写技术(以gmail为例)
查看>>
C#基础概念二十五问
查看>>
C#在Excel中将连续多列相同数据项合并
查看>>
C#如何把html中的相对路径变成绝对路径
查看>>
用C#编写发手机中文短信息Windows服务
查看>>
C#的四个基本技巧
查看>>
编程实例 使用C#的BitmapData
查看>>
区分Oracle和SQL Server常用函数调用方法
查看>>
详解Visual C#数据库基本编程
查看>>
第一个C#应用程序
查看>>
第一章C#简介
查看>>
NGWS runtime 技术基础
查看>>
Linux find 文件查询 用法示例
查看>>
Linux 查看文件大小
查看>>
mysql 命令
查看>>
MySQL执行外部sql脚本文件的命令
查看>>
解决MySql Error Code: 2006
查看>>
查看mysql数据库和表所占用空间
查看>>
Guava Collections使用介绍
查看>>
Ordering犀利的比较器
查看>>