Linux之Dockefile封装应用镜像及Docker的分层结构

本文详细介绍了Docker镜像的分层结构及其目的,强调了镜像分层在资源共享和软件更新中的优势。同时,探讨了Dockerfile在构建镜像过程中的重要作用,包括FROM、MAINTAINER、COPY、ADD等关键命令的使用,以及如何通过Dockerfile封装httpd应用。最后,文章提到了容器数据卷的管理以及如何清理无用资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、镜像的分层结构

docker共享宿主机内核,镜像中共享的是根文件系统,而镜像的分层结构则是为了共享资源

1. docker采用镜像分层的目的

  • 每个软件都是基于某个镜像去运行的,因此一旦某个底层环境出现问题,就不需要去修改全部基于该镜像的软件的镜像,只需要修改底层环境的镜像。
  • 共享资源,其它相同环境的软件镜像都共同去享用同一个环境镜像,而不需要每个软件镜像要去创建一个底层环境。

2. docker共享主机的内核

hostnamectl #查看宿主机版本
docker load -i ubuntu.tar
docker run -it --name vm2 ubuntu	#创建并运行容器,-it交互式运行
uname -r	#查看创建容器的内核,与宿主机一致

3. 镜像层的生成

docker rm -f vm1    #删除容器
docker run -it --name vm1 ubuntu    #交互式运行vm1容器
touch file{1..10}
ctrl+d退出交互环境
docker commit vm1 ubuntu:v1	#将此容器重新打包为一个镜像(起别名)
docker history ubuntu	#查看镜像构造历史
docker history ubuntu:v	#多一层镜像层

在底层环境的基础上,通过commit命令可以使docker容器继续在底层环境上构建镜像层。容器以下的所有镜像层都是只读的,docker查找文件时是从上往下依次查找,容器层用来保存镜像变化的部分,并不会对镜像本身进行任何修改,一个镜像最多可以有127层,docker容器进行可写时,是在可写容器层进行可写动作,经底层镜像层的文件会复制到可写层在执行删除、创建等动作
 

二、Dockerfile实现镜像的封装

构建镜像的过程:运行容器、修改容器和将容器保存为新的镜像

构建镜像的缺点:效率低、可重复性弱、容易出错;使用者无法对镜像进行审计,存在安全隐患

1. 简单镜像的构建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值