docker镜像原理

一、docker镜像原理 
docker镜像本质
是一个分层文件系统
docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件只要几个G
centos的ISO镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB
由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的tomcat今年更新大小500多MB

1.操作系统组成部分:
进程调度子系统
进程通信子系统
内存管理子系统
设备管理子系统
文件管理子系统
网络通信子系统
作业控制子系统

文件管理子系统:
Linux文件系统bootfs和rootfs两部分
bootfs:包含bootloader引导加载程序和kernel内核
rootfs:root文件系统,/dev /proc /bin /etc
不同的Linux发行版,bootfs基本一样,而rootfs不同

2.docker镜像由特殊的文件系统叠加而成
最低端是bootfs,并使用宿主机的bootfs
第二层是root文件系统rootfs, 称为base image
再往上是叠加其他的镜像文件
统一文件系统 union file system 技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
一个镜像可以放在另个镜像的上面,位于下面的镜像称为父镜像,最底部的镜像称为基础镜像
当从一个镜像启动容器时,docker会在最顶层加载一个读写文件系统作为容器

二、镜像制作
docker镜像如何制作
1.容器转为镜像
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load -i 压缩文件名称


数据卷目录挂载的  commit 不会写入到镜像里

镜像转为压缩文件,可以传输


2.dockerfile
是一个文本文件
包含了一条条指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
对于开发人员:可以为开发团队提供一个万全一致的开发环境
对于测试人员:可以直接拿开发时所构建的镜像或者通过dockerfile文件构建一个新的镜像开始工作了
对于运维:在部署时,可以实现应用的无缝移植

hub.docker.com、

FROM
MAINTAINER
LABEL
RUN
CMD
ENTRYPOINT
COPY
ADD
ENV
ARG
VOLUME
EXPOSE
WORKDIR
USER
HEALTHCHECK
ONBUILD
STOPSIGNAL
SHELL

定义dockerfile 发布springboot


springboot 打包
右侧 maven lifecycle  package


找到目录
java -jar ./demo1-0.0.1-SNAPSHOT.jar
可以测试,直接运行这个包也可以正常运行的

chmod 777 root 
上传文件包
demo1-0.0.1-SNAPSHOT.jar ./docker-files
移到文件夹下
mv demo1-0.0.1-SNAPSHOT.jar ./docker-files

ls -al  查看文件夹的信息

先下载一个 java8
docker search java
docker pull java:8


定义父镜像
FROM java:8
定义作者信息
MAINTAINER haha
将jar包添加到容器:
ADD demo1-0.0.1-SNAPSHOT.jar app.jar
定义容器启动执行的命令:
CMD java -jar app.jar
通过dockerfile构建镜像
docker bulid -f dockerfile 文件路径 -t 镜像名称:版本


FROM java:8
MAINTAINER haha <haha.com>
ADD demo1-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar
docker bulid -f ./dockerfile 文件路径 -t 镜像名称:版本

 docker build -f ./springboot_dockerfile -t app .


docker run -id -p 9000:8080 app


装个命令行补全和错误命令检测吧
不然报错 大半天都没找到 卡壳就卡死了

docker run -it --name=c1 centos:7

1.自定义centos7镜像
要求
1.默认登录路径为/usr
2.可以使用vim

官方提供的centos  默认在/目录下   vim不能用,只能vi

定义父镜像
定义作者信息
执行安装vim命令
定义目录

FROM centos:7
MAINTAINER haha
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash

docker build -f ./centos_dockerfile -t haha_centos:1 .

docker run -it --name=haha_cen 

docker run -it --name=haha_cen haha_centos:1


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值