设计并实现一款名为 Docker Image Creator(DIC)的脚本工具,该工具能够高效地利用提供的 Dockerfile 文件,自动化完成从源文件构建定制化镜像的全过程,并无缝集成镜像的功能性运行测试环节,旨在提供一站式的镜像构建与验证解决方案。
1 项目缘由
日常开发中,我常常依赖 Docker Hub 中现成的镜像资源,但有时这些镜像无法满足特定的定制化需求。因此,我计划转向利用 Dockerfile 手动构建符合个人需求的镜像。整个过程涉及 Dockerfile 的编写、编译以及新构建镜像的功能验证,而且这一系列步骤是需要反复进行的,显得相对繁琐,准备采用一种简化的方式来处理这个流程。
考虑到自身需求较为基础,我不打算花费过多时间搜索并评估市面上已有的相关工具。鉴于此,决定动手创建一个简单的自动化脚本来实现这一目标,名称就叫 Docker Image Creator,简称:DIC。由于 Dockerfile 的语法结构直观易懂,此次实现的功能也不算复杂,我选择了 Shell 脚本作为实现工具,它与 Docker 命令结合紧密。这样一来,我可以直接通过编写 Shell 脚本来驱动 Docker 编译 Dockerfile、构建镜像及执行相应的镜像功能测试,从而达到一站式构建与验证的目的。
2 项目核心功能
2.1 Image 构建
该项目借助 Dockerfile 实现自定义镜像的编译过程,确保按照预设配置生成一个新的 image。
2.2 镜像功能验证
为了确认生成的 image 是否具备可用性,我们采用标准的 docker run 命令启动容器实例,对新构建的 image 进行全面的功能性测试。通过观察容器启动状况以及内部服务响应情况,我们可以准确判断 image 是否满足设计要求与实际应用场景的需求。
2.3 建立本地资源库
为了提升镜像构建效率和资源管理规范性,我们可以采取以下措施:将镜像构建过程中所需的全部资源文件进行整理和归档,并将其存储在本地磁盘,构建出一个本地资源库。这样,在进行镜像编译生成的过程中,可以直接从本地资源库中提取所需的资源文件,显著减少网络传输带来的等待时间。
此外,通过这种方式建立本地资源库还有助于进行严格的版本控制,确保每次镜像构建所使用的资源版本一致性,避免因外部资源服务器内容变动导致的不稳定性问题,进而提高整体开发环境和部署流程的可控性和可靠性。
3 项目特点
- 脚本可执行,不需要安装依赖
- 支持多个应用并行开发、编译、调试
4 项目结构
项目结构如下:
docker-image-builder —— DIB项目根目录
|— apps —— 应用集合
| |— app1 —— 应用1
| | |— framework —— 框架 framework 的软连接,引入框架在app内部使用
| | | |— ...【内容略,同根目录下的 framework】
| | |- build.sh —— 构建脚本【调用 framework/scripts/_build.sh 脚本】
| | |- build_run.sh —— 构建并运行的脚步【调用 framework/scripts/_build_run.sh 脚本】
| | |— config.sh —— 配置脚本
| | |— Dockerfile
| |
| |— app2 —— 应用2
| | |— ...
| | |— ...
|
|— framework —— 框架【正式运行时设置为只读,避免被改写】
| |— resources —— 资源集合
| | |— runtime —— 运行时资源集合
| | | |— xxxx —— 供选用的运行时资源
| | |
| | |— install —— 用来被 image 从本地安装的资源集合
| | |— xxxx —— 供选用的安装资源
| |
| |— scripts —— 脚本集合
| |— _build.sh —— 真正实现构建的脚本
| |— _build_run.sh —— 真正实现镜像构建、并生成容器测试运行的脚本
|
|- createApp.sh —— 创建应用的脚本
|— readme.md —— 说明文件
5 使用简介
5.1 创建应用:
在项目根目录(docker-image-builder)下,执行 createApp.sh 脚本,创建应用。
./createApp.sh appName appVersion
创建应用后,会在 apps 目录下生成应用目录,目录结构同前述的 app1,同时创建一个最简单示例的 Dockerfile,相当于创建 image 的 “Hello World” 示例。
5.2 构建镜像:
在应用目录(如示例中的 app1)下,执行 build.sh 脚本,构建镜像。
5.3 构建并运行镜像:
在应用目录(如示例中的 app1)下,执行 build_run.sh 脚本,构建并运行镜像。
6 项目特别说明
- 此项目是仅供学习参考,请勿轻易用于生产环境
- 考虑到 Windows、macOS 是平时工作、学习最常用的操作系统,因此只在 Windows、macOS 上测试
- 此项目由于是临时发起,边学边写,所以不会很严谨,欢迎拍砖、更希望能引玉
- 原创码字不易,欢迎评论、点赞、收藏、关注
标签:脚本,01,Creator,Image,sh,构建,镜像,Docker,Dockerfile From: https://blog.csdn.net/weixin_42398461/article/details/137185206下一节内容介绍 —— 预备知识
主要简单介绍一下 Docker、Dockerfile 的基本概念,Dockerfile 对的基本语法,Windows 和 macOS 下 Docker 桌面的安装,Docker 镜像的创建和运行测试等。