Docker build之后存到哪了

在使用Docker进行应用部署时,我们常常会使用docker build命令来构建镜像。那么,构建完成后,这个镜像会存储在哪里呢?

Docker镜像存储位置

Docker镜像是通过分层存储的方式来构建的,每一层都是只读的,并且可以被共享。而在构建镜像的过程中,每一层都会生成一个唯一的ID。当我们使用docker build命令构建镜像时,Docker会将每一层的文件系统的变化记录下来,并保存在一个叫做“层”的目录结构中。

默认情况下,Docker镜像是存储在Docker主机的文件系统中的。具体位置取决于不同的操作系统和Docker的配置。在Linux系统上,Docker镜像的默认存储位置是/var/lib/docker/目录下的aufsoverlay目录中。在Windows系统上,默认存储位置是C:\ProgramData\Docker\windowsfilter

docker-image-storage

代码示例

下面我们通过一个简单的代码示例来演示Docker构建镜像后的存储位置。

首先,我们创建一个名为Dockerfile的文件,并在其中定义了一个基本的镜像构建过程:

# 使用基础镜像
FROM ubuntu:latest

# 设置工作目录
WORKDIR /app

# 拷贝文件到镜像中
COPY . .

# 安装依赖
RUN apt-get update && apt-get install -y curl

# 设置环境变量
ENV MY_NAME Docker

# 运行命令
CMD ["echo", "Hello, $MY_NAME!"]

接下来,我们使用docker build命令来构建镜像:

docker build -t myapp .

在构建过程中,Docker会逐步执行Dockerfile中的指令,并生成每一层的文件系统变化。构建完成后,我们可以使用docker images命令来查看生成的镜像:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myapp               latest              88d392b4d9f7        2 minutes ago       72.9MB

可以看到,我们的镜像已经构建完成,并存储在Docker的镜像仓库中。

序列图

下面是使用mermaid语法绘制的Docker构建镜像的序列图:

sequenceDiagram
    participant Dockerfile
    participant Docker
    participant Images
    participant Filesystem
    
    Dockerfile ->> Docker: docker build
    Docker ->> Dockerfile: Read instructions
    Docker ->> Filesystem: Create image layer
    Docker ->> Filesystem: Record filesystem changes
    Docker ->> Images: Store image layer

关系图

下面是使用mermaid语法绘制的Docker构建镜像的关系图:

erDiagram
    IMAGES ||--o{ LAYERS : "1" 
    LAYERS ||--o{ FILES : "N"

总结

Docker构建镜像后,镜像会存储在Docker主机的文件系统中。每一层的文件系统变化都会被记录下来,并以层的形式存储在特定的目录中。我们可以使用docker images命令来查看已构建的镜像。

希望本文能帮助你更好地理解Docker镜像的存储位置。如果你还有其他关于Docker的问题,欢迎留言讨论。

docker-image-storage