diff --git a/README.en.md b/README.en.md index 785c73478dddb0236c1cf50e0c6711627b3d5c9d..55527102c941f522daad08992f9450a93e722bf3 100644 --- a/README.en.md +++ b/README.en.md @@ -1,92 +1,174 @@ [中文](README.md) | English -# openEuler official container images +# openEuler Official Container Images ## Introduction Dockerfiles for openEuler official container images, include openEuler basic image and application images. +## Related Links +- [openEuler Container Image Usage Guide](https://forum.openeuler.org/t/topic/4189) +- [Bisheng JDK Container Image Practice](https://blog.csdn.net/weixin_43878094/article/details/139444574) -## Basic Container Image +## Base Images -openEuler basic image is published by openEuler community in [openEuler repo](https://repo.openeuler.org), "openeuler:latest" is the current stable available image. +The base images of openEuler are officially released by the community and are currently available at [openEuler repo](https://repo.openeuler.org). The `latest` tag represents the latest available long-term stable image. -After the official images are published, we will push to the third-party Hubs, details are as follows: +Once the official images are released, they will be synchronized and pushed to various remote container image repositories, as detailed below: -- name: `openeuler/openeuler` -- Download: `docker pull [Remote repo URL]openeuler/openeuler[:tags]` -- Support arch: amd64, arm64 -- Tags: - - [20.03-lts](https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/) - - [20.03-lts-sp1](https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/) - - [20.03-lts-sp2](https://repo.openeuler.org/openEuler-20.03-LTS-SP2/docker_img/) - - [20.03-lts-sp3](https://repo.openeuler.org/openEuler-20.03-LTS-SP3/docker_img/) - - [20.03-lts-sp4, 20.03](https://repo.openeuler.org/openEuler-20.03-LTS-SP4/docker_img/) - - [20.09](https://archives.openeuler.openatom.cn/openEuler-20.09/docker_img/) - - [21.03](https://archives.openeuler.openatom.cn/openEuler-21.03/docker_img/) - - [21.09](https://archives.openeuler.openatom.cn/openEuler-21.09/docker_img/) - - [22.03-lts](https://repo.openeuler.org/openEuler-22.03-LTS/docker_img/) - - [22.09](https://archives.openeuler.openatom.cn/openEuler-22.09/docker_img/) - - [22.03-lts-sp1](https://repo.openeuler.org/openEuler-22.03-LTS-SP1/docker_img/) - - [22.03-lts-sp2](https://repo.openeuler.org/openEuler-22.03-LTS-SP2/docker_img/) - - [22.03-lts-sp3](https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/) - - [22.03-lts-sp4, 22.03](https://repo.openeuler.org/openEuler-22.03-LTS-SP4/docker_img/) - - [23.03](https://repo.openeuler.org/openEuler-23.03/docker_img/) - - [23.09](https://repo.openeuler.org/openEuler-23.09/docker_img/) - - [24.03-lts, latest](https://repo.openeuler.org/openEuler-24.03-LTS/docker_img/) -- Path rule:`openeuler/Dockerfile` +### 1. Repository and Image Name +The {repository/name} for the base image on third-party image hubs is `openeuler/openeuler` -## Application Container Image +### 2. Supported Tags +- [20.03-lts](https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/) +- [20.03-lts-sp1](https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/) +- [20.03-lts-sp2](https://repo.openeuler.org/openEuler-20.03-LTS-SP2/docker_img/) +- [20.03-lts-sp3](https://repo.openeuler.org/openEuler-20.03-LTS-SP3/docker_img/) +- [20.03-lts-sp4, 20.03](https://repo.openeuler.org/openEuler-20.03-LTS-SP4/docker_img/) +- [20.09](https://archives.openeuler.openatom.cn/openEuler-20.09/docker_img/) +- [21.03](https://archives.openeuler.openatom.cn/openEuler-21.03/docker_img/) +- [21.09](https://archives.openeuler.openatom.cn/openEuler-21.09/docker_img/) +- [22.03-lts](https://repo.openeuler.org/openEuler-22.03-LTS/docker_img/) +- [22.09](https://archives.openeuler.openatom.cn/openEuler-22.09/docker_img/) +- [22.03-lts-sp1](https://repo.openeuler.org/openEuler-22.03-LTS-SP1/docker_img/) +- [22.03-lts-sp2](https://repo.openeuler.org/openEuler-22.03-LTS-SP2/docker_img/) +- [22.03-lts-sp3](https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/) +- [22.03-lts-sp4, 22.03](https://repo.openeuler.org/openEuler-22.03-LTS-SP4/docker_img/) +- [23.03](https://repo.openeuler.org/openEuler-23.03/docker_img/) +- [23.09](https://repo.openeuler.org/openEuler-23.09/docker_img/) +- [24.03-lts](https://repo.openeuler.org/openEuler-24.03-LTS/docker_img/) +- [24.03-lts-sp1, latest](https://repo.openeuler.org/openEuler-24.03-LTS-SP1/docker_img/) +- [24.09](https://repo.openeuler.org/openEuler-24.09/docker_img/) -Dockerfiles for various popular application implementations based on openEuler basic image. +### 3. Contents +`Base/openeuler/Dockerfile` -- Repository rule:`openeuler/[Application name]`, such as: `openeuler/nginx`. -- Path rule:`[Application name]/[Application version]/[openEuler version]/Dockerfile`, such as: the nginx 1.20.1 based on openEuler 20.03 LTS SP1 is under `nginx/1.20.1/20.03-lts-sp1/Dockerfile`. +## Application Images - In particular, for application container images of complex software stacks, in order to accurately express their dependencies, the `[application version]` in the Dockerfile storage path can be described as the complete software stack version, for example: `pytorch/2.1.0-cann7 .0.RC1.alpha002/22.03-lts-sp2/Dockerfile` stores the pytorch 2.1.0 application image Dockerfile based on cann7.0.RC1.alpha002 and openEuler 22.03-lts-sp2. -- Tag rule: `[Application version]-[openEuler version]`, such as: `openeuler/nginx:1.20.1-oe2003sp1`. +Images for various popular application implementations based on openEuler base images. -The contents of each application container image directory: -1. All openEuler application images contain a README (such as nginx/README.md), included: - - `Quick reference`:related links - - `[Application name] | openEuler`:application descriptions - - `Supported tags and respective Dockerfile links`:tags and Dockerfile links, this must be updated when a new tag is published - - `Usage`:describe how to use the application container image, and try to give a test case that can be easily run - - `Question and answering`:where to file bugs and issues +### 1. Repository and Image Name +The {repository/name} for the application images on third-party image hubs is `openeuler/[application name]` - The README will be synchronously published to the third-party Hubs, so please be serious while contributing. +### 2. Contents +Application images are categorized into seven types based on scenarios, and the image building files are stored in corresponding scenario directories: + - Bigdata: `Bigdata/` + - AI: `AI/` + - Distributed Storage: `Storage/` + - Database: `Database/` + - Cloud Service: `Cloud/` + - High-Performance Computing: `HPC/` + - Others: `Others/` -2. All openEuler application images contain a `meta.yml` file,which stores the image tag info,the file path is: `[app-name]/meta.yml`. The example is as follows: - - `meta.yml` +#### 2.1 Overall Directory +Due to the complexity of application image functionalities, the depth of the directory is uncertain. The overall directory is as follows: +``` +openeuler-docker-images/ +└── AI/ + |── image-list.yml + |── OPEA/ + | |── AudioQnA/ + | | └── Image_1/ + | | └── Image_2/ + | └── DocSum/ + | └── Image_3/ + | └── Image_4/ + | └── Image_5/ + |───Image6/ + └───Image7/ +``` +Each scenario directory must contain an `image-list.yml` to describe the roots for each application image's **minimum directory unit (MDU)** (i.e., all `Image_i/`s in the example), `image-list.yml` is formatted as follows: +``` +# AI/image-list.yml +images: + Image_1: AI/OPEA/AudioQnA/Image_1/ # root path to Image_1 + Image_2: AI/OPEA/AudioQnA/Image_2/ + Image_3: AI/OPEA/DocSum/Image_3/ + Image_4: AI/OPEA/DocSum/Image_4/ + Image_5: AI/OPEA/DocSum/Image_5/ + Image_6: Image_6/ + Image_7: Image_7/ +``` +The existence of `image-list.yml`: +- Helps check the integrity of the image directory. +- Facilitates the listing of application images in [openEuler Software Center](https://easysoftware.openeuler.org/zh/image). + +### 2.2 Minimum Directory +This repository requires the **minimum directory unit** `Image_i/` to strictly follow the structure below: +``` +# here, Image_i == nginx +nginx/ + |── README.md + |── meta.yml + |── doc/ (optional) + | |── picture/ + | | └── logo.png + | └── image-info.yml + └── 1.27.2/ + |── 24.03-lts + | └── Dockerfile + |── 22.03-lts-sp4 + | └── Dockerfile + |── 22.03-lts-sp3 + | └── Dockerfile + └── 22.03-lts-sp1 + └── Dockerfile +``` +In each **MDU** `Image_i/`, the following contents must be included: +- Dockerfile + + The storage path is `[application version]/[openEuler version]/Dockerfile`. For example, the Dockerfile for the nginx application image version `1.27.1` based on openEuler `22.03-lts-sp1` is located at `1.27.1/22.03-lts-sp1/Dockerfile`. + + Specifically, for complex software stack application container images, to accurately express their dependencies, the application version in the Dockerfile storage path can be described as the complete software stack version number. For example, in PyTorch root path: `2.1.0-cann7.0.RC1.alpha002/22.03-lts-sp2/Dockerfile` stores the Dockerfile for the pytorch `2.1.0` version application image based on `cann7.0.RC1.alpha002` and openEuler `22.03-lts-sp2` (AI container image tags can refer to [oEEP-0014](https://gitee.com/openeuler/TC/blob/be62b1cb6d5131aafac5f7b0eabf75d712d2b4f0/oEEP/oEEP-0014%20openEuler%20AI%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E8%BD%AF%E4%BB%B6%E6%A0%88%E8%A7%84%E8%8C%83.md)). - # spark/meta.yml - 3.3.1-oe2203lts: - path: spark/3.3.1/22.03-lts/Dockerfile - 3.3.2-oe2203lts: - path: spark/3.3.2/22.03-lts/Dockerfile - + +- README.md + + The README should cover the following information in order: + + - Quick reference: Relevant link information + - [Application Name] | openEuler: Description of the application's functionality + - Supported tags and respective Dockerfile links: Description of the current application container image tags and Dockerfile links; must be updated when new images are added + - Usage: Description of how to use the application container image, ideally including a simple runnable test case + - Question and answering: Provide Issue links + + The README will be published to the Overview or Description section of the third-party Hub image detail page; contributions via PR should be taken seriously. + +- meta.yml + + This file describes the tag information and Dockerfile storage paths for each image, located at: `[application name]/meta.yml`. The file format is as follows: + ``` + # spark/meta.yml + 3.3.1-oe2203lts: + path: spark/3.3.1/22.03-lts/Dockerfile + 3.3.2-oe2203lts: + path: spark/3.3.2/22.03-lts/Dockerfile + arch: aarch64 + ``` In the above example, each pair of `` contains image's publishing configuration, it's as follows: - - key: Tag of the image, `3.3.1-oe2203lts` and `3.3.2-oe2203lts` are different image tags of the openeuler/spark. - - value: It contains configuration items those are used to build image, thos are follows. + - key: Represents the image tag, with a recommended naming format of: `[application version]-[openeuler version]`, such as `3.3.1-oe2203lts` and `3.3.2-oe2203lts`, indicating different tags of the `openeuler/spark`. + - value: Describes how to build the image, explained as follows: Configuration description: - | Item | Optional | Description | Example | + | Configuration Item | Required | Description | Example | |--|--|--|--| | path | yes | Relative path of the image dockerfile | spark/3.3.1/22.03-lts/Dockerfile | - | arch | no | This configuration is required when only one architecture is supported. By default, it supports arm64 and amd64 architectures.| x86_64,only x86_64 or aarch64 can be configured. | + | arch | optional | Specifies the architecture when releasing a single-architecture image, optional `x86_64` or `aarch64`
if not filled, a dual-architecture image for both `x86_64` and `aarch64` will be released by default | x86_64 | - It is required to add or update the meta.yml while Dockerfile is changed. + *Note: **When updating the image tag, the above configuration must also be updated**. + +- (Optional) `doc/` -3. All openEuler application images contain a `doc/` directory, which stores the graphic and text information of the image: + This directory stores graphic and textual information about the image for display in [openEuler Software Center](https://easysoftware.openeuler.org/zh/image)'s application image section. If it is not to be displayed in [openEuler Software Center](https://easysoftware.openeuler.org/zh/image), this section can be omitted. - `doc/image-info.yml` The content is as follows: name - category (such as: bigdata, ai, storage, database, cloud, hpc, others) + category (options: bigdata, ai, storage, database, cloud, hpc, others) description environment tags @@ -99,7 +181,8 @@ The contents of each application container image directory: - `doc/picture/` Store application-related images, such as application logos or runtime screenshots of typical scenes. - + + *Note: **The files and contents in the above `doc/` directory must exist simultaneously for the image to be displayed correctly in [openEuler Software Center](https://easysoftware.openeuler.org/zh/image)**. ## Available Container Registries @@ -122,10 +205,11 @@ docker pull quay.io/openeuler/openeuler:latest ## Contributions -Welcome to contribute openEuler application container images, please submit PR according to the above rules. As the PR is passed and merged, the automatically publishing process will be triggered, and these images will be published to available container registries mentioned above! +Welcome to contribute openEuler application container images, please submit PR according to the above rules. Once the PR is passed and merged, the automatically publishing process will be triggered, and these images will be published to available container registries mentioned above! Code check instruction: 1. [EulerPublisher](https://gitee.com/openeuler/eulerpublisher) is used to build, check and publish container images. 2. All test cases of application container images are stored in [/tests/container/app](https://gitee.com/openeuler/eulerpublisher/tree/master/tests/container/app). Developers who want to publish container images can also submit test cases to [EulerPublisher](https://gitee.com/openeuler/eulerpublisher). 3. When the PR in which you add or modify a Dockerfile is merged, a new image will be automatically published or the existing image will be updated. 4. When the PR in which you add or modify a README.md is merged, the README.md will be synchronously published to the third-party Hubs. +5. **Published images generally cannot be removed**, even if they are no longer updated or maintained, as users may still be using them. Therefore, in special cases where an image needs to be removed, please create an issue providing the tag of the image to be removed and the reason for removal, and contact the maintainer. \ No newline at end of file diff --git a/README.md b/README.md index ce2e42b42557220152c15edb891578d9c7349d13..fd2fa9dc5757da4872ba0859f0cfc66139ac9f10 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## 介绍 -这里存放着由openEuler官方提供的容器镜像,包含openEuler基础镜像、应用镜像。 +这里存放着由openEuler官方提供的容器镜像Dockerfile,包含openEuler基础镜像、应用镜像。 ## 相关链接 - [openEuler容器镜像使用指南](https://forum.openeuler.org/t/topic/4189) @@ -61,7 +61,7 @@ openEuler的基础镜像由社区官方发布,目前发布在[openEuler镜像 - 其他: `Others/` #### 2.1 整体目录 -由于应用镜像功能的复杂性,存放文件的路径深度具有不确定性,如: +由于应用镜像功能的复杂性,存放文件的路径深度具有不确定性,整体存放路径如下: ``` openeuler-docker-images/ └── AI/ @@ -78,7 +78,7 @@ openeuler-docker-images/ └───Image7/ ``` -在上述示例中,存放应用镜像的**最小目录单元**是`Image_i/`,在每个场景目录下必包含一个`image-list.yml`文件用以描述每个应用镜像**最小目录单元**的起始路径,便于CI检查镜像目录完整性。格式如下: +每个场景目录下必须包含一个`image-list.yml`用以描述每个应用镜像**最小目录单元**(即,示例中的所有`Image_i/`)的起始路径,其格式如下: ``` # AI/image-list.yml示例 images: @@ -90,11 +90,14 @@ images: Image_6: Image_6/ Image_7: Image_7/ ``` +`image-list.yml`的存在: +- 有助于检查镜像目录完整性; +- 方便[openEuler软件中心应用镜像板块](https://easysoftware.openeuler.org/zh/image)上架应用镜像。 #### 2.2 最小目录 -本仓库要求**最小目录单元**`Image_i`严格遵循以下结构: +本仓库要求**最小目录单元**`Image_i/`严格遵循以下结构: ``` -# 以`Image_i` == `nginx`为例 +# 以Image_i == nginx为例 nginx/ |── README.md |── meta.yml @@ -112,7 +115,7 @@ nginx/ └── 22.03-lts-sp1 └── Dockerfile ``` -在每个**最小目录单元**中`Image_i/`下,包含以下内容: +在每个**最小目录单元**`Image_i/`下,包含以下内容: - Dockerfile: 存放路径为`[应用的版本号]/[openEuler的版本号]/Dockerfile`。示例:基于openEuler `22.03-lts-sp1`的nginx `1.27.1`应用镜像Dockerfile位于`1.27.1/22.03-lts-sp1/Dockerfile`。 @@ -153,7 +156,7 @@ nginx/ - (可选)`doc/`目录 - 存放该镜像的图文信息,用于在[openEuler软件中心的应用镜像版本](https://easysoftware.openeuler.org/zh/image)展示该镜像。无需展示在软件中心时,可不填写本部分内容。 + 存放该镜像的图文信息,用于在[openEuler软件中心应用镜像板块](https://easysoftware.openeuler.org/zh/image)展示该镜像。无需展示在软件中心时,可不填写本部分内容。 - `doc/image-info.yml`,内容如下: 名称(name):应用名