简介
本全面教程探讨了 Docker 镜像的基本概念,为开发者和 DevOps 专业人员提供了有关创建、构建和管理容器镜像的深入见解。通过理解 Docker 镜像架构的核心原理,读者将获得构建高效且可重复的软件部署解决方案的实用知识。
本全面教程探讨了 Docker 镜像的基本概念,为开发者和 DevOps 专业人员提供了有关创建、构建和管理容器镜像的深入见解。通过理解 Docker 镜像架构的核心原理,读者将获得构建高效且可重复的软件部署解决方案的实用知识。
Docker 镜像是轻量级、独立的可执行包,其中包含运行应用程序所需的一切:代码、运行时环境、系统工具、库和设置。它们是容器技术的基本构建块,能够在不同的计算环境中实现一致且可移植的软件部署。
层类型 | 描述 | 示例 |
---|---|---|
基础层 | 基础操作系统 | Ubuntu 22.04 |
中间层 | 系统依赖项 | Python 运行时 |
应用层 | 源代码和应用文件 | Web 应用程序 |
配置层 | 运行时设置 | 端口映射 |
## 创建项目目录
mkdir my-docker-app
cd my-docker-app
## 创建一个简单的 Python 应用程序
echo "print('Hello, Docker!')" > app.py
## 创建 Dockerfile
cat > Dockerfile << EOL
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3
COPY app.py /app/app.py
WORKDIR /app
CMD ["python3", "app.py"]
EOL
## 构建 Docker 镜像
docker build -t my-python-app.
## 运行容器
docker run my-python-app
此示例展示了如何使用最小化的 Ubuntu 基础创建 Docker 镜像、安装 Python 并运行一个简单的 Python 脚本。Dockerfile 定义了镜像的每一层,确保在不同环境中具有可重复性和一致性。
Docker 镜像是不可变的,这意味着一旦创建,它们就不会改变。每个镜像由多个只读层组成,这些层可以在不同镜像之间共享,从而提高存储和下载效率。
Docker 提供了一套全面的命令,用于在 Ubuntu 22.04 系统上高效管理镜像。了解这些命令对于维护一个干净且优化的容器环境至关重要。
## 列出所有本地镜像
docker images
## 详细检查镜像
docker inspect ubuntu:latest
## 按特定条件过滤镜像
docker images --filter "dangling=true"
操作 | 命令 | 描述 |
---|---|---|
拉取镜像 | docker pull |
从仓库下载镜像 |
删除镜像 | docker rmi |
删除本地镜像 |
删除未使用镜像 | docker image prune |
清理未使用的镜像 |
标记镜像 | docker tag |
创建镜像别名 |
## 删除所有未使用的镜像
docker image prune -a
## 删除特定镜像
docker rmi image_name:tag
## 删除没有运行容器的镜像
docker image prune -f
## 检查镜像大小
docker images --format "{{.Repository}}:{{.Tag}}: {{.Size}}"
## 使用多阶段构建创建最小化镜像
FROM ubuntu:22.04 AS builder
## 构建依赖项
FROM ubuntu:22.04
## 仅复制必要的工件
## 标记特定的镜像版本
docker tag original_image:latest new_image:v1.0
## 将标记的镜像推送到仓库
docker push new_image:v1.0
仓库类型 | 访问级别 | 使用场景 |
---|---|---|
Docker Hub | 公共/私有 | 社区镜像、官方仓库 |
私有注册表 | 受限 | 企业环境、敏感项目 |
云注册表 | 托管 | 可扩展的、集成的云部署 |
## 登录 Docker Hub
docker login
## 创建私有注册表认证
docker login private-registry.example.com
## 生成注册表凭证
htpasswd -Bc registry.password username
## 限制本地镜像存储
docker system prune -a --volumes
## 删除悬空镜像
docker image prune
## 设置存储限制
docker system df
#!/bin/bash
## Docker 镜像清理脚本
## 删除超过 30 天的镜像
docker image prune -a --filter "until=720h"
## 删除未使用的卷
docker volume prune -f
## 删除未使用的网络
docker network prune -f
## 拉取最新镜像
docker pull ubuntu:latest
docker pull nginx:stable
## 标记并推送到私有注册表
docker tag ubuntu:latest private-registry.com/ubuntu:latest
docker push private-registry.com/ubuntu:latest
## 扫描镜像中的漏洞
docker scan ubuntu:latest
## 与持续集成/持续交付 (CI/CD) 管道集成
trivy image ubuntu:latest
Docker 镜像是现代容器化技术的关键组成部分,能够在各种不同的计算环境中实现一致且可移植的软件部署。通过掌握镜像创建、层管理和仓库实践,开发者可以简化应用程序打包、提高部署效率,并确保在不同平台和基础设施上可靠地分发软件。