Heycm

Heycm

1 - docker简单介绍

372
2020-06-12

记录学习 docker 的脚印

🏃🏾‍♂️

是什么

​ 说到docker,就会搜罗到很多关键词,容器,容器虚拟化技术,进程级,环境隔离......

​ 我也不知道它到底是个什么东西,我也不知道最能描述它最符合它的定义是什么,我就知道它是一条咸鱼,一条背着集装箱的咸鱼。

Docker

​ 如果说把宿主机比作大海,docker就是海里的一只01724ADC,鲸鱼背上背着的集装箱,就是一个一个的容器,容器就是所谓镜像的实例,而镜像是容器的模板,在这个图里我们看不见,就假装镜像在鲸鱼的肚子里吧,那这个时候鲸鱼的肚子就是仓库。另外还有远程仓库,比如说官方Docker Hub和国内阿里云、网易镜像服务等等。

​ 上面提到的各种名词,它们的关系是长这样的
guanxi

​ 就很类似git和github,只不过指令有些不同,道理都是相通的。

​ 仓库(registry):存放镜像的地方。

​ 镜像(image):容器的模板,同一个镜像可以启动多个容器,镜像可以区分不同版本。

​ 容器(container):镜像的实例,就是一个一个独立运行的环境。

​ 这样解释还是很抽象,那么,镜像里到底有什么是什么样的结构为什么可以实例化为一个容器成为一套独立的环境呢?

​ 镜像的结构其实是有包含关系的,可以比作一个洋葱,拨了一层又一层,每一层都是一个镜像,最里层就是一套操作系统的核心。比如说一个tomcat镜像它就长这样017830B0

jx

​ 镜像最里层是centos操作系统,中间一层是java环境,外层是tomcat,这样当它实例化一个容器时,这个容器就相当于一套装了jdk和tomcat的centos系统,它当然就可以独立运行并且可以部署javaweb项目进来,甚至还可以给它加装数据库。

​ 使用同一个镜像可以实例化多个容器,各容器之间也可以做到互不打扰,也可以使用数据卷、数据卷容器在各容器之间、容器与宿主机之间共享数据等等。

​ ......

为什么

​ 抄一句话:每种技术的出现都是为了解决某些麻烦痛点难点。

​ docker解决开发与运维之间的爱恨情仇。

​ 通常,开发者A在开发项目时使用Win或Mac,运维B在部署时选择Linux。

​ 据说有docker之前......

​ 有一天,A团队搞完了一个项目,把一堆war包丢给B。

​ A:“我搞完了你部署一下就么得事儿了~”

​ B:“好的”

​ 嘀嗒嘀嗒............

​ B:“你这什么破包是不是没搞好啊这都跑不通啊!”

​ A:“什么玩意?怎么可能跑不通你过来瞅瞅,这跑的好好的你会不会玩!”

​ B:“你才不会玩我扒拉日志给你瞅瞅?你会不会开发”

​ A:“你不会部署!”

​ B:“你不会开发!”

​ .........

​ 有docker之后......

​ A:“兄弟我搞好了给你镜像你跑一下”

​ B:“ok没毛病~”

​ 。

​ “Build, Ship and Run Any App, Anywhere”

​ 使用docker的优势就是,只需要配一次环境,就可以在任意地方部署运行,而且可跨平台。

​ 卧槽优秀