Docker 镜像是一个轻量级、可执行的独立软件包,它包含了运行某个应用所需的所有内容。以下是 Docker 镜像的核心组成部分及其作用:
RUN
、COPY
等)。这些层通过联合文件系统(如 Overlay2、AUFS)合并为统一的视图。/bin
、/lib
)。pip
包、npm
模块)。app.jar
、index.js
)。nginx.conf
、application.properties
等。LABEL
指令定义)。CMD
或 ENTRYPOINT
):容器启动时执行的命令。ENV
):预设的键值对。WORKDIR
):容器内的默认路径。EXPOSE
):声明容器监听的端口(需通过 -p
映射到主机)。USER
指令指定运行身份)。VOLUME
指令声明的持久化数据目录(如 /var/lib/mysql
)。# Dockerfile 示例
FROM alpine:3.14 # 基础层:Alpine Linux
RUN apk add --no-cache nginx # 层:安装 Nginx
COPY index.html /var/www/html # 层:添加静态文件
EXPOSE 80 # 元数据:声明端口
CMD ["nginx", "-g", "daemon off;"] # 元数据:启动命令
构建后的镜像包含:
1. Alpine 的根文件系统。
2. Nginx 二进制文件及其依赖。
3. 用户添加的 index.html
。
4. 启动配置和端口信息。
bash
docker run -it --rm <镜像名> sh
bash
docker save <镜像名> > image.tar && tar -xf image.tar
bash
docker inspect <镜像名>
通过理解镜像的组成,可以更高效地优化镜像大小(如多阶段构建)和调试容器问题。