docker 学习记录
1.操作系统组成部分:
进程调度子系统:
进程通信子系统
内存管理子系统
设备管理子系统
文件管理子系统
网络通信子系统
作业控制子系统
2.Linux文件系统由bootfs和rootfs两部分组成
(1)bootfs:包含BootLoader(引导加载程序)和kernel(内核)
(2)rootfs:root文件系统,包含的就是典型的Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件
(3)不同的Linux发行版本,bootfs基本一样,而rootfs不同,如Ubuntu,centos等
3.Docker镜像原理
(1)Docker镜像是由系统的文件系统叠加而成。
(2)最低端是bootfs,并使用宿主机的bootfs,docker中操作系统启动几秒钟,而实际安装一个操作系统需要几十分钟,原因就是,通过docker镜像启动的操作系统,底层使用的是docker宿主机的bootfs不需要重新加载bootfs。
(3)第二层是root文件系统rootfs称为base image。
(4)然后可以再往上叠加其它镜像文件,docker镜像分层构建的好处是:已经下载过的镜像文件可以被后面需要下载的镜像复用,e.g.比如已下载完成Tomcat镜像如下图,在在下载NGINX镜像的时候,基础镜像已经存在不需要再下载。
(5)统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了统一的视角,这样就隐藏了多层的存在在用户的角度来看,只存在一个文件系统。
(6)一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像称为基础镜像。
(7)当从一个镜像启动容器时,docker会在最顶层加载一个读写文件系统作为容器,下图中的只读镜像不支持修改,如果用户想修改一个镜像的话,可以通过可读写的容器构建一个镜像。
4.Dockerfile
5.为什么tomcat普通安装需要50M,通过docker安装确需要500M
由于docker镜像原理是分层构建,比如tomcat最上边一层是tomcat,由于tomcat依赖于jdk所以下边一层是jdk,基础镜像是rootfs(Ubuntu、centos),最下边一层是bootfs,由于tomcat镜像构建需要依赖其他文件导致docker启动Tomcat要500MB
6.Docker镜像的本质是什么?
是一个分层文件系统
7.Docker中一个centos镜像为什么只有200M,而一个centos操作系统的iso文件要几个G?
docker镜像是分层构建的,每一层可以复用,Linux 系统底层(bootfs)基本一致,所以linux系列系统中安装docker镜像会复用Linux底层的基础镜像(bootfs),只有rootfs和其他镜像层需要下载,所以比较小。
8.Docker如何制作镜像
(1)容器转为镜像。
docker commit containerid 镜像名称:版本号
(2)dockerfile构建镜像
9.镜像压缩和解压缩
镜像打包之后可以进行传递
(1)docker save -o 压缩文件名称 镜像名称:版本号
(2)docker load -i 压缩文件名称
(3)cat <<EOF> filename
>文件内容
>文件内容
<EOF>
可以快速创建一个文件
10.Dockerfile概念
(1)Dockerfile是一个文件文本。
(2)包含一条条指令。
(3)每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像。
(4)对于开发人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了。
(5)对于运维人员:再部署的时候,可以实现应用的无缝移植。
11.Docker Compose概述
docker compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止,使用步骤:
(1)利用dockerfile定义运行环境镜像。
(2)使用docker-compose.yml定义组成应用的各个服务,定义好启动顺序和关联关系。
(3)运行docker-compose启动应用。
服务编排:
微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量很大。
(1)要从Dockerfile build image 或者去dockerhub拉取image
(2)要创建多个container
(3)要管理这些container(启动停止删除)
服务编排:按照一定的规则批量的管理容器
docker-compose.yml服务编排如下:
这个dockerfile实现功能为:启动两个容器应用nginx和app,并通过nginx反向代理APP