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 <镜像名> shbash
docker save <镜像名> > image.tar && tar -xf image.tarbash
docker inspect <镜像名>通过理解镜像的组成,可以更高效地优化镜像大小(如多阶段构建)和调试容器问题。