1 、Docker镜像的原理
-
Docker镜像本质是什么?
-
Docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G?
-
Docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有10多MB?
操作系统组成部分: 计算机组成原理
-
进程调度子系统
-
进程通信子系统
-
内存管理子系统
-
设备管理子系统
-
==文件管理子系统==
-
网络通信子系统
-
作业控制子系统
linux文件系统由bootfs和rootfs两部分组成。
bootfs:包含bootloader (引导加载程序)和kernel(内核)
-
rootfs: root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件
-
·不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等
Docker镜像是由特殊的文件系统叠加而成
最底端是bootfs,并使用宿主机的bootfs
第二层是root文件系统rootfs,称为base image: 基础镜像
然后再往上可以叠加其他的镜像文件
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器
2.镜像制作
自定义镜像:提供了两种方式: 第一种:基于容器来制作 第二种: 通过dockerfile文件来制作[重要]
第一种 容器转为镜像:
步骤: 把现有的镜像--运行成一个容器---修改容器中的内容--->变成镜像---把镜像压缩文件--->交给其他人---变成本地镜像
docker commit 容器id 镜像名称:版本号
docker commit 04f7bf4b4fab aa_centos:1.0
把容器变成了镜像
docker save -o 压缩文件名称 镜像名称:版本号
docker save -o aa_centos.tar aa_centos:1.0
docker load -i 压缩文件名称
docker load -i aa_centos.tar
3、 dockerfile的概念[重要]
Dockerfile是一个文本---任意一个镜像都是通过dockerfile来制作
文件包含了一条条的指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
对于开发人员:可以为开发团队提供一个完全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
对于运维人员:在部署时,可以实现应用的无缝跨平台移植
4 、Dockerfile关键字
这些命令必须都大写
5、 Dockerfile案例
5.1 案例一
编辑dockerfile文件
[root@localhost ~]# vi centos_dockerfile
FROM centos:7
MAINTAINER aaa <819878771@qq.com>
RUN yum install -y vim
WORKDIR /usr
CMD ["/bin/bash"]
构建镜像
[root@hecs-33111 docker-files]# docker build -f centos_dockerfile -t aaa_centos:1
-f :表示dockerfile文件
-t : 镜像名称版本号
. : 必须加上
创建容器
docker run -it --name=c3 aaa_centos:1.5
5.2 案例二
准备好springboot jar包并传至宿主机的根目录
FROM java:8
LABEL author="张三"
ADD springtest-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar
docker build -f qy163_dockerfile -t qy163:1.0 .
启动并做端口映射
docker run -id --name=qy163 -p 9000:8080 qy163:1.0
可以访问成功。
6、把本地镜像上传阿里远程镜像仓库
docker login --username=aliyun5424006047 registry.cn-hangzhou.aliyuncs.com
docker tag 1f634040778d registry.cn-hangzhou.aliyuncs.com/aaa/qy163:1.0
docker push registry.cn-hangzhou.aliyuncs.com/aaa/qy163:1.0