Docker镜像完全指南:从入门到精通,Unity笔记(十)——SpriteRenderer精灵渲染器、SpriteAtlas精灵图集、瓦片地图代码控制、动画系统。
·
Docker 镜像知识总结
Docker 镜像的概念
Docker 镜像是 Docker 容器的静态模板,包含运行应用程序所需的所有文件系统、依赖项和配置。镜像采用分层存储结构,每一层代表文件系统的变更,这种设计提高了镜像的复用性和构建效率。
镜像与容器的关系
镜像是只读的,容器是镜像的运行实例。容器在镜像的基础上添加一个可写层(容器层),所有运行时修改都保存在这一层,不会影响原始镜像。
镜像的分层结构
Docker 镜像由多个只读层(Layer)堆叠而成,每层基于上一层的增量修改。这种设计使得镜像可以共享公共层,减少存储占用和下载时间。例如,多个镜像可能共享相同的底层操作系统层。
镜像的构建方式
通过 Dockerfile 构建
Dockerfile 是一个文本文件,包含一系列指令用于定义镜像的构建步骤。例如:
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
运行 docker build -t my-nginx . 即可构建镜像。
通过容器提交
运行一个容器并修改其内容后,可通过 docker commit 将容器保存为新的镜像:
docker commit <container_id> my-new-image
镜像的存储与分发
Docker 镜像通常存储在镜像仓库中,例如 Docker Hub、私有 Harbor 或 AWS ECR。常用命令包括:
docker pull nginx:从仓库拉取镜像。docker push my-nginx:推送镜像到仓库。docker save -o my-nginx.tar my-nginx:将镜像导出为 tar 文件。docker load -i my-nginx.tar:从 tar 文件加载镜像。
镜像的优化策略
减少镜像体积
- 使用多阶段构建(Multi-stage build),仅保留最终需要的文件。
- 合并 RUN 指令以减少层数,并清理临时文件。
提高构建速度
- 合理利用缓存,将不常变动的指令(如依赖安装)放在 Dockerfile 前面。
- 使用
.dockerignore排除不必要的文件,避免发送过多上下文到 Docker 引擎。
镜像安全实践
- 定期更新基础镜像以修复漏洞。
- 使用
docker scan或第三方工具(如 Trivy)扫描镜像中的安全问题。 - 避免以 root 用户运行容器,通过
USER指令切换非特权用户。
常用命令总结
docker images:列出本地镜像。docker rmi <image_id>:删除镜像。docker history <image>:查看镜像的构建历史。docker tag <image> new-repo:tag:为镜像打标签。
通过理解镜像的分层机制、构建方法和优化策略,可以更高效地管理和使用 Docker 镜像,提升容器化应用的部署质量。
更多推荐
所有评论(0)