docker化你的java应用(上)

前言

在各种技术大会(互联网架构,云计算等等),哪都少不了docker的身影。docker为啥这么火?因为它解决了大部分企业的痛点:快速的持续集成,服务的弹性伸缩,部署简单,方便了运维,而且为企业节省了机器资源,降低了成本。现在在很多企业(腾讯/京东/阿里/小红书等等)都大规模使用docker。作为开发工程师,咱们或多或少需要接触docker,因为咱们的程序运行在docker容器当中,了解docker,有益无害。下面我们就进入docker的世界吧~

走进docker

docker是什么?

docker logo

docker的官网是:https://www.docker.com/,上图是docker的logo:一条鲸鱼驮着一些集装箱在大海中遨游!(这个logo非常有意思,蕴含了docker的核心思想,稍后分析)

docker官网对docker的一句话定义是:

“Docker is the world’s leading software containerization platform.”

(docker是全球领先的软件容器化平台)

大白话就是:docker是一个用来装应用的容器,就像杯子可以装水,书包可以放书,笔筒可以放笔....你可以把任何你想得到的程序放到docker中!

docker是跨平台的,支持linux/macos/windows,不过docker是在ubuntu系统上开发的,对于ubuntu支持最好。

理解docker logo

docker logo里面是一条鲸鱼驮着一些集装箱在海中遨游。

想一下,如果没有集装箱,那么货物是零散的存放,运输过程中说不定出现破损或者丢失,如果采用集装箱,因为是密闭的,标准的,货物运输会很安全。

鲸鱼,游到码头拿货(取集装箱),然后出发,运输集装箱到目的地。这种存储货物/运输货物的方式很标准,保证从一个地方到另一个地方,不会出现问题。

以前,A机器上运行的程序想部署一套到其他机器上去,如果采取传统到方式进行文件拷贝等,有可能出现问题,采用集装箱的方式进行运输就可以避免。

既然,集装箱是标准的,就是说它的操作也是标准的,比如打开,关闭。这就意味着我们对应用的启动、停止等将是统一的命令。(不论是nginx,tomcat等等,它们的启动,停止都将是统一的命令!这里说的就是docker的api接口的标准化)

集装箱和集装箱之间有隔离性,就好像虚拟机似的。我们知道虚拟机可以有自己的内存/CPU/硬盘/网卡等,docker差不多,不过docker的容器更佳轻量级,它的创建、销毁非常快。【docker的隔离性最底层还是依赖linux的lxc(Linux Container容器是一种内核虚拟化技术)机制来实现的】

docker思想

docker的思想解决了哪些问题?

“程序在我这里运行好好的,咋在你那里就不行了呢?”

一个普通的java web程序跑起来,需要哪些依赖?

操作系统os/jdk/webserver/代码/配置文件/...

比如,程序中调用了系统命令,现在os变了;

比如,jdk版本,编译使用的是1.8版本,机器上安装的是jdk1.6,无法识别class版本;

比如,tomcat版本,有些旧版本的配置新版本不支持;...

针对这种问题,docker的处理方式是,把os/jdk/webserver/代码等等一个个的放到集装箱中去,打包放到鲸鱼上,由鲸鱼给我们送到目的地去,也就是说docker解决了运行环境不一致带来的问题!

“哪个大哥又写死循环了,系统又变慢了...”

传统的方式中,我们一台机器上部署了很多服务,很可能由于其他服务出现死循环占领cpu,日志狂打磁盘爆满等情况导致我们自己的服务出现异常。

而docker的隔离性可以完全避免这样的问题,因为docker在启动的时候,就给限定了最大能使用的cpu,内存,硬盘,如果超出就kill掉。

“双十一来了,又要部署几千台服务,过完节后,还得下线这么多,累死了...”

对于大部分系统而言,流量并不是均匀的,比如电商系统,在11.11大促期间,就需要临时扩容机器,之后在下掉,如果是成百上千台,那就给运维带来非常大的工作量,有了docker就变得简单了,从5台服务器变成500台,5000台...都是分分钟的事情。(也就是说docker解决了快速扩容,弹性伸缩)

docker的三大核心概念

在上面我们大白话说了那么多,现在我们需要用专业术语来揭开docker的3大核心概念了:镜像/仓库/容器。

镜像(images),就是上面我们说的集装箱;

仓库(repository),就是码头;

容器(container),就是运行程序的地方;

docker运行一个程序的过程是:去仓库把镜像拉到本地,然后用命令把镜像运行起来,变成容器!(build构建镜像;ship运输镜像;run运行的镜像就是一个容器)


简单示例它们之间的关系

本质来说,镜像就是一系列的文件,docker利用linux的ufs(联合文件系统)机制进行存储来达到分层的效果。比如/test1目录下有a和b两个文件,test2目录下有c和d两个文件,那么利用ufs可以达到/test下有a、b、c、d四个文件,即ufs是一种分层的文件系统,可以将不同的目录挂到同一个虚拟文件系统下。每一层镜像层加载完毕后,会被看成同一个目录,相当于只有一个文件系统,docker的这种文件系统就被称作为镜像。

容器,上面已经提及过,就是一个进程,可以把容器想象成一个虚拟机,会有自己的文件系统。注意容器是可写的,而镜像是只读的,因为运行中的程序大部分有写的需求,比如写日志,修改一些文件什么的。如果容器需要对镜像层的某些文件作修改,该如何处理呢?那么就把镜像层中的文件拷贝到容器中,在容器中进行修改,当我们的应用读取文件的时候,是从对顶层容器开始查找,如果没有才会开始查找下一层(这样我们就能读取到修改的文件了。)

仓库,这里有点类似maven仓库的概念,其实就是为了传输镜像。https://hub.docker.com/这个是docker官网给我们提供的远程仓库地址,当然公司内部一般会有自己的私有镜像中心。

上图中,可以清楚的看到,同一个镜像可以生成多个容器运行,容器之间是相互独立的。


好了,到这里,本篇博客为大家介绍了docker的一些初步知识,下一篇将带大家实践docker以及分析一个springboot项目的docker化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容