Docker镜像是什么、包含什么、能做什么

本文详细介绍了Docker镜像的基本概念、构建原理及容器的运行机制。解释了镜像的分层结构如何实现资源的高效共享,并阐述了容器层的可写特性及其工作方式。

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

镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。
base镜像----提供了一个基本的操作系统环境,用户可以根据需要安装和配置软件
base镜像通常是各种Linux发行版的Docker镜像比如ubuntu、Debian、centos等。
base镜像只是在用户空间与发行版一致,kernel版本与发行版是不同的。比如说虚机系统是ubuntu14.04,运行一个容器是centos系统的,那么centos使用的其实就是本虚机的kernel。
容器只能使用本地虚机的kernel且不能修改。
每一个镜像都会有一个文本文件Dockerfile,定义了如何构建Docker镜像。编写Dockerfile文件有专门的讲解,百度一下~
镜像的分层结构:DockerHub中绝大多数的镜像都是通过在base镜像中安装和配置需要的软件构建出来的。base镜像是from scratch开始,新镜像是直接在base镜像上构建from centos......
新镜像是从base镜像一层一层叠加生成的,每安装一个软件就等于在现有的镜像上增加一层。
Docker镜像采用分层结构的好处就是共享资源。
可写的容器层:当容器启动时,一个新的可写层被加载到镜像的顶部,这一层就叫容器层,容器层之下都叫镜像层。只有容器层是可写的,容器层下面的所有镜像层都是只读的。对容器的任何改动都只会发生在容器层中。
这里,所有的镜像层联合一起组成一个统一的文件系统,用户在容器层看到的就是一个叠加之后的文件系统。镜像层内部是有上下之分的:

 - 添加文件:在容器中创建文件时,新文件被添加到容器层中。
 - 读取文件:当在容器中读取某个文件时,Docker会从上往下依次在各镜像层中查找此文件,一旦找到打开并读入内存。
 - 修改文件:在容器中修改已存在的文件时,Docker会从上往下依次在各个镜像层中查找此文件,一旦找到立即将其复制到容器层中,然后才修改。(copy-on-write特性)
 - 删除文件:在容器中删除文件时,Docker会从上往下依次在镜像层中找,找到后,会在容器层记录下此删除操作。
copy-on-write特性说明容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。所以镜像可以被多个容器共享。

镜像——-容器

### Docker镜像的功能和用途 #### 功能概述 Docker镜像是用于创建容器的基础组件。每一个运行中的容器都是基于某个特定版本的镜像启动而来。镜像包含了操作系统环境、应用程序及其依赖项,确保应用可以在任何支持Docker技术的环境中一致地执行[^3]。 #### 构建与分发 利用`docker build`命令可以根据定义好的Dockerfile来构建自定义镜像;而官方仓库如Docker Hub提供了大量的预构建镜像供开发者下载使用。对于希望共享自己开发的应用程序或者服务的人来说,可以将自己的私有镜像推送到公共或私人注册表中以便他人获取[^2]。 #### 存储结构 Docker采用了一种特殊的存储机制——联合文件系统(UnionFS),使得多个不同的只读层能够被组合在一起形成单个可写的顶层空间。当新数据写入时,实际操作发生在最上面一层,下面各层保持不变。这种方式不仅提高了效率还简化了更新过程,因为只需要替换掉变化的部分即可完成整个系统的升级。 #### 加载与保存 为了方便管理和迁移,在本地计算机之间传输大型二进制格式化的压缩包形式存在的tarball文件成为可能。通过`docker save`可以把现有镜像导出成这样的档案文件,再借助于`docker load`将其恢复至目标机器上的镜像列表里去[^1]。 ```bash # 导出名为myapp:latest的镜像到当前目录下的myapp.tar文件中 docker save -o myapp.tar myapp:latest # 将myapp.tar导入并加载为可用的Docker镜像 docker load -i myapp.tar ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值