参考答案:
Docker 镜像(Docker Image)是一个轻量级、可执行的独立软件包,包含了运行某个应用程序所需的代码、库、依赖、环境变量以及配置文件等。它是一个静态的文件系统,用于创建 Docker 容器的基础。镜像本身是不可变的,一旦创建后不会被修改。容器则是镜像的运行实例,它是镜像的一个动态副本。
Docker 镜像是由多个层(Layer)构成的,每一层代表了镜像的一个增量。每一层都包含了应用或系统的一部分,例如某个软件包、库、配置文件等。镜像的层次结构使得 Docker 在构建镜像时能够重用已有的层,提高构建效率。
镜像层:每一层都是只读的,基于上一层镜像构建,具有增量特性。例如,第一层可以是操作系统的基础镜像(如 Ubuntu),第二层可以是安装的应用程序(如 Nginx)。
镜像元数据:包括镜像的基本信息,比如标签(tag)、创建者信息、命令(如启动容器时运行的命令)、环境变量等。
Dockerfile:镜像的构建通常是基于 Dockerfile 进行的,Dockerfile 是一个文本文件,包含了如何构建镜像的指令和步骤(例如安装软件包、复制文件、设置环境变量等)。
只读层和可写层:Docker 镜像中的每一层都是只读的,当创建容器时,Docker 会为每个容器增加一个可写层。容器中的任何更改(如写入文件或修改配置)都会只影响容器的可写层,而不会影响镜像的其他层。
增量更新:镜像的每一层都是增量的,可以共享相同的基础镜像层。当多个容器基于同一个镜像启动时,它们会共享相同的镜像层,减少了存储空间的浪费。
镜像的缓存机制:Docker 会缓存镜像构建过程中的每一层,在重新构建镜像时,如果层没有变化,Docker 会直接使用缓存中的层,从而提高构建效率。
镜像:是一个只读的模板,定义了容器的运行环境。镜像是静态的,它包含应用程序及其所有依赖的文件系统。
容器:是镜像的运行实例,容器是动态的,可以启动、停止、修改,并且容器内的更改不会影响镜像。
简而言之,镜像是容器的模板,容器是镜像的运行时实例。
构建镜像:通常使用 Dockerfile
来定义镜像的构建过程。通过 docker build
命令可以根据 Dockerfile
构建镜像。
1docker build -t <image_name> .
查看镜像:使用 docker images
或 docker image ls
命令可以查看本地存储的所有镜像。
1docker images
拉取镜像:从 Docker Hub(或其他注册中心)下载镜像,使用 docker pull
命令。
1docker pull <image_name>
删除镜像:使用 docker rmi
命令可以删除本地镜像。
1docker rmi <image_name>
Docker 镜像可以有多个标签,标签用于标识不同版本的镜像。默认情况下,镜像标签是 latest
,表示最新版本的镜像。但也可以自定义标签,以便管理不同版本。
docker pull ubuntu
会拉取 ubuntu:latest
镜像。docker pull ubuntu:18.04
会拉取特定版本的 Ubuntu 镜像。本地存储:在本地开发环境中,Docker 镜像通常会存储在 Docker 主机的文件系统中,可以使用 docker images
命令查看本地存储的所有镜像。
远程仓库:Docker Hub 是最常用的镜像仓库,也是 Docker 官方提供的公共镜像仓库。除此之外,也可以使用私有镜像仓库,或其他第三方镜像仓库(如 Google Container Registry、Amazon ECR 等)。
构建镜像:
根据 Dockerfile
构建镜像并为其打标签。
1docker build -t myimage:latest .
列出镜像:
查看本地所有镜像。
1docker images
拉取镜像:
从 Docker Hub 或其他镜像仓库拉取镜像。
1docker pull ubuntu:18.04
删除镜像:
删除指定的镜像。
1docker rmi myimage:latest
查看镜像详细信息:
查看镜像的详细信息(如镜像大小、层、标签等)。
1docker inspect myimage
最近更新时间:2024-12-09