Docker-初识

作者: yuanzicheng | 来源:发表于2018-05-17 21:58 被阅读61次

1.背景

在工作中,我们可能都遇到过以下问题:

1. 开发人员的开发机器上需要安装各种软件和 一大堆依赖库,如Java、Nginx、Tomcat、MySQL、Redis等,还要修改各种配置,可能花了很长时间,还是存在问题。
2. 测试人员按照开发给出的文档部署应用和服务,测出了一堆问题,结果发现因环境问题引起的。
3. 运维工程师同时维护开发、测试、生产三套环境,经常在不同环境下安装相同的软件、依赖,修改相同的配置,工作量巨大且容易出错。
4. 运营搞线上活动期间,系统流量会骤然增大,需要紧急扩容,传统方式需要至少一小时才能完成,如果没有提前完成,活动期间用户操作会很卡、体验很差。
5. ......

然后,这些问题在Docker面前根本不值一提,分分钟就能搞定。

2.Docker是什么

Docker是Go语言编写的容器虚拟化解决方案,基于apache2.0协议,2013年出现,发展非常迅猛,目标是成为云应用的基石。

Docker将应用构建成镜像,并且支持版本控制,应用版本与镜像版本一一对应,镜像可以发布到镜像仓库,如果希望运行某个应用,可以从镜像仓库下载指定版本的镜像到本地运行。

Docker的口号:Build once,Run anywhere,Configure once,Run anything。

3.容器虚拟化 vs 传统虚拟化

对于“虚拟化”,相信大家都不陌生,Vmware就是传统虚拟机的一种。传统虚拟化需要为每个虚拟机单独提供一套操作系统,而Docker容器虚拟化基于LXC实现Linux Kernel共享,容器与Host共享操作系统内核,IO和CPU性能接近于物理机。

下面2张是Docker容器与传统虚拟机的架构图比较(来源于Docker官网)

Docker.png VM.png

容器与虚拟机的比较

特性 容器 虚拟机
启动 秒级 分钟级
硬盘 MB GB
性能 接近物理机 明显弱于物理机
单机支持量 支持上千个容器 只支持几十个

4.Docker的结构

Docker程序本身是C/S架构,包括Docker Client和Docker Server;整个Docker生态系统又可以分为Docker程序自身和Docker仓库。

相关文章

网友评论

    本文标题:Docker-初识

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