docker 镜像 overview

简介: docker 镜像 overview

Docker 镜像 overview

文章目录

1. 什么是 Docker 镜像?

Docker 镜像是用于在 Docker 容器中执行代码的文件。Docker 镜像充当构建 Docker容器的一组指令,就像模板一样。使用 Docker 时,Docker 镜像也可以作为起点。 镜像相当于虚拟机 (VM) 环境中的快照。


Docker 用于在容器中创建、运行和部署应用程序。Docker 镜像包含应用程序运行所需的应用程序代码、库、工具、依赖项和其他文件。当用户运行一个镜像时,它可以成为一个容器的一个或多个实例。


Docker 镜像有多个层,每一层都源自上一层,但又有所不同。这些层加速了 Docker 构建,同时提高了可重用性并减少了磁盘使用。图像层也是只读文件。创建容器后,在不可更改的图像之上添加一个可写层,允许用户进行更改。


对 Docker 镜像和容器中的磁盘空间的引用可能会令人困惑。区分大小和虚拟大小很重要。大小是指容器的可写层使用的磁盘空间,而虚拟大小是指容器和可写层使用的磁盘空间。 镜像的只读层可以在从同一 镜像启动的任何容器之间共享。

2. Docker 镜像 demo

Docker 镜像包含运行容器化应用程序所需的一切,包括代码、配置文件、环境变量、库和运行时。当镜像部署到 Docker 环境时,它可以作为 Docker 容器执行。docker run 命令从一个特定的镜像创建一个容器。


Docker 镜像是可重用的资产——可部署在任何主机上。开发人员可以从一个项目中获取静态图像层并在另一个项目中使用它们。这节省了用户时间,因为他们不必从头开始重新创建图像。

3. Docker 容器与 Docker 镜像

Docker 容器是用于应用程序开发的虚拟化运行时环境。它用于创建、运行和部署与底层硬件隔离的应用程序。一个 Docker 容器可以使用一台机器,共享其内核并虚拟化操作系统以运行更多独立的进程。因此,Docker 容器是轻量级的。


Docker 镜像就像其他类型的 VM 环境中的快照。它是 Docker 容器在特定时间点的记录。Docker 镜像也是不可变的。虽然它们无法更改,但可以复制、共享或删除它们。该功能对于测试新软件或配置很有用,因为无论发生什么,图像都保持不变。


容器需要一个可运行的镜像才能存在。容器依赖于镜像,因为它们用于构建运行时环境并且是运行应用程序所必需的

4. Docker 镜像剖析

一个 Docker 镜像有很多层,每个镜像都包含配置容器环境所需的一切——系统库、工具、依赖项和其他文件。图像的一些部分包括:


Base image:用户可以使用 build 命令完全从头开始构建第一层。

Parent image:作为基础镜像的替代方案,父镜像可以是 Docker 镜像中的第一层。它是一个重复使用的图像,作为所有其他层的基础。

Layers:层被添加到基础镜像中,使用代码使其能够在容器中运行。Docker 映像的每一层都可以在 /var/lib/docker/aufs/diff 下查看,或者通过命令行界面 (CLI) 中的 Docker history

命令查看。Docker 的默认状态是显示所有顶层镜像,包括存储库、标签和文件大小。中间层被缓存,使顶层更容易查看。Docker 具有处理镜像层内容管理的存储驱动器。

Container layer:一个 Docker 镜像不仅会创建一个新的容器,还会创建一个可写或容器层。该层托管对正在运行的容器所做的更改,并存储新写入和删除的文件,以及对现有文件的更改。该层还用于自定义容器。

Docker manifest:Docker 映像的这一部分是一个附加文件。它使用JSON格式来描述图像,使用图像标签和数字签名等信息。



相关文章
|
6天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
165 28
|
19天前
|
缓存 监控 持续交付
|
2天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
8天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
66 2
|
9天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
18 1
|
11天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
15天前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
27 1
|
22天前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
295 2
|
2天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
10 0
|
26天前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
606 1
下一篇
无影云桌面