Docker镜像

什么是docker镜像

docker镜像即UnionFS(联合文件系统)–(可以理解为多层花卷),联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加

特性:一次加载多个文件系统,但从表面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

docker镜像加载原理

docker的镜像实际上是由一层层的文件系统组成,这种层级的文件系统是UnionFS。
UnionFS由两个部分组成bootfs(boot file system)和rootfs(root file system)。

bootfs主要包含bootloader和kernel,bootloader主要第引导kernel。docker镜像的底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会下载bootfs。

rootfs中包含是典型Linux系统中的/dev,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu、Centos等等。

平时我们安装进虚拟机的CentOS都是好几个G,但是为什么docker这里只有200M?

对于一个精简的OS,rootfs可以很笑,只需要包含最基本的命令、工具和程序库就可以了,因为底层直接用Host和kernel,自己只需要提供rootfs就行了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

docker镜像为什么采用这种分层结构?

最大的一个好处就是共享资源
比如:有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中只需要加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以共享。

特点

docker容器都是只读的。当容器启动时,一个新的科协层被加载到镜像的顶部。这一层通常被称为”容器层“,容器层之下的都叫”镜像层“。

根据镜像模板生成新的镜像

这里以tomcat为例

拉取tomcat镜像并运行
docker run -it -p 9999:8080 tomcat

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200204174958857.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjYyOTAz,size_16,color_FFFFFF,t_70
http://ip:9999 访问
在这里插入图片描述
这里出现404不是因为出问题了,而是因为原本应该在webapps文件中的文件都在webapps.dist文件中,接下来将webapps.dist修改为webapps。

  • Ctrl+p+q退出容器界面
  • 查看对应的容器iddocker ps
    在这里插入图片描述
  • 进入容器docker exec -it 容器id /bin/bash
    在这里插入图片描述
  • 将webapps修改为webapps2,将webapps.dist改为webapps
    在这里插入图片描述
  • 测试http://ip:9999 访问
    在这里插入图片描述
对已修改的容器commit生成自己的镜像
docker commit -a="author" -m="description" 容器id 包名/容器名

在这里插入图片描述

  • 查看本地镜像
    在这里插入图片描述
  • 运行自定义的镜像并测试
    在这里插入图片描述
    在这里插入图片描述
    到这里以镜像为模板自定义新的镜像已经完成,以后我们可以根据自己的需要自定义不同的镜像。也可以将自己自定义的镜像发布阿里云。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值