为什么用Docker?
代码在不同的环境和配置下,可能出错。
开发人员和运维人员之间的矛盾。
以前提交代码,现在提交镜像
以前搬家,现在搬楼。
Docker理念
Docker是由Go语言实现的云开源项目。
docker理念,一次构建,处处运行。
虚拟机缺点
1.资源占用多
2.冗余步骤多
3.启动慢
docker可以理解为是一个精华版,缩减版,高速版的linux操作系统。
为什么Docker比虚拟机快?
Docker组成
主要组成:
镜像 容器 仓库
镜像就是模板,类比类class
容器就是镜像的实例,类比对象object
一个类可以有多个对象
一个镜像可以有多个容器
仓库是存放镜像的地方
我们把应用程序(代码+环境+配置+数据等等)配置打包形成一个运行环境,就是image镜像文件,然后根据镜像文件生成不同的容器实例,容器实例对应不同的服务,如redis,mysql等。
镜像原理
镜像是什么?
镜像是轻量级的,可执行的软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件等。
bootfs和rootfs
bootfs主要包含bootloader和kernel内核。bootfs是镜像的最底层。
rootfs在bootfs之上,是各种不同的操作系统发行版,如Ubuntu,Centos等等。
为啥docker上的linux操作系统很小?
因为在docker上下载的linux操作系统共用docker的bootfs,需要下载的是rootfs部分。而且底层都是直接用宿主机的内核。
为什么tomcat在docker中很大?
因为它里面包含了能运行tomcat整个环境所需要的其他配置软件。如jdk8,centos,kernel等。这就是联合文件系统(花卷)
为什么docker要采用这种分层镜像?
为了共享资源,这好比maven里面的本地仓库里面的jar包。