本文已参与「开源摘星计划」,欢迎正在阅读的你加入,活动链接:https://github.com/weopenprojects/WeOpen-Star

首先介绍一下什么是 OpenCloudOS ?OpenCloudOS 是一个国产开源操作系统社区,OpenCloudOS 是腾讯牵头的多家厂商在软件和开源生态的优势,在云原生、稳定性、性能、硬件支持等方面均有坚实支撑,可以平等全面地支持所有硬件平台基于 Linux Kernel 的操作系统。本文将介绍如何使用 Docker 镜像制作自定义基于 OpenCloudOS 的镜像文件,并且将其发布到 Docker Hub 上供其他人使用,主要使用 Dockerfile 快速制作的方式 。


Docker镜像制作

下面例子中我采用 Dockerfile 的形式制作一个 OpenCloudOS 镜像,内置 Java17 版本,镜像名称:OpenCloudOS。在工作目录中创建应该名字为 Dockerfile 的文件,并将下面的内容复制到文件中:

FROM opencloudos/opencloudos:8.6

# 这里要替换 your_name 为您的名字, 和your_email 为您的Email
MAINTAINER LeonDing <[email protected]>

# 安装 jdk17
RUN cd /usr/local \ && yum install -y wget \ && wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz \ && tar -zxvf jdk-17_linux-x64_bin.tar.gz \ && echo "export JAVA_HOME=/usr/local/jdk-17
export PATH=$PATH:$JAVA_HOME/bin;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar;" >> /etc/profile \ && source /etc/profile

# 启动时运行这个命令
CMD ["/bin/bash"]

上面这种方式通过 Dockerfile 进行构建的自定义 OpenCloudOS 环境镜像,里面有一段 Shell 脚本来自定义安装 JDK 这种方式可以根据自己编写 Shell 逻辑进行安装,但是不够简便,可以通过在 Docker Hub 中已经提供好的 Open JDK 镜像作为基础镜像二次构建,下面是这种方式的 Dockerfile 内容:

# 基础镜像
FROM opencloudos/opencloudos:8.6

# 基于 OpenJDK 叠加
FROM openjdk

# 这里要替换 your_name 为您的名字, 和your_email 为您的Email
MAINTAINER LeonDing <[email protected]>

# 启动时运行这个命令
CMD ["/bin/bash"]

然后即可执行下面命令构建属于自己的基于 OpenCloudOS 自定义环境的镜像了,命令如下:

root@lu:~/oc# docker build --no-cache  -t opencloudos-openjdk:v1 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM opencloudos/opencloudos:8.6
 ---> 85381566b97e
Step 2/4 : FROM openjdk
latest: Pulling from library/openjdk
latest: Pulling from library/openjdk
828689dcde4b: Pull complete 
4f742b2cfb7e: Pull complete 
642e9a9e0a5f: Pull complete 
Digest: sha256:a033670aa69df318f84ea9c76d999e9de2b5fff911a65ce3d0f280316c014e87
Status: Downloaded newer image for openjdk:latest
 ---> bc32630b1cf3
Step 3/4 : MAINTAINER LeonDing <[email protected]>
 ---> Running in beeb3412285e
Removing intermediate container beeb3412285e
 ---> 0aade518ef7b
Step 4/4 : CMD ["/bin/bash"]
 ---> Running in abfafd3b2f53
Removing intermediate container abfafd3b2f53
 ---> f70fb74cb8a8
Successfully built f70fb74cb8a8
Successfully tagged opencloudos-openjdk:v1

当构建完成之后会提示你 Successfully tagged opencloudos-openjdk:v1 相关信息,例如下图为我构建过程中的截图。

构建完成之后就可以通过 Docker 来启动自定义构建的镜像,运行镜像,查看镜像是否满足我们自定义的环境需求如下:

# 查看镜像ID
root@lu:~/oc# docker images
REPOSITORY                TAG            IMAGE ID       CREATED         SIZE
opencloudos-openjdk       v1             f70fb74cb8a8   2 minutes ago   481MB
openjdk                   latest         bc32630b1cf3   8 days ago      481MB
opencloudos/opencloudos   8.6            85381566b97e   4 weeks ago     280MB

# 运行镜像
docker run -it f70fb74cb8a8 /bin/bash
bash-4.4# java -version # 版本信息
openjdk version "18.0.2.1" 2022-08-18
OpenJDK Runtime Environment (build 18.0.2.1+1-1)
OpenJDK 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)

至此我们已经完成基于 OpenCloudOS 相关的自定义镜像构建工作,下面开始介绍如何将其推送到远程的 Docker Hub 中供别人使用。


推送到 Docker Hub

把自定义镜像镜像推送到远端 Docker Hub 首先得需要在 Docker Hub 官网注册一个账号,然后在本地登录这个账号,即可推送自己的镜像到远程服务器中,注册账号请去 https://hub.docker.com/。使用 docker login 命令就可以登录自己的账号,注意这里的账号不是邮箱而是用户名!

再使用 docker tag 命令创建自定义镜像版本,这里需要带上自己用户名作为前缀,如下图所示:

当上传完成之后我们就可以去自己的 Docker Hub 主页看看,下面就有自己创建镜像类别,如下图为我刚刚创建的自定义镜像:

到此整个自定义制作镜像过程完成,可以通过命令 docker pull auula/opencloudos-openjdk 来拉取我创建这个镜像来使用。


便宜 VPS vultr
最后修改:2023 年 07 月 07 日
如果觉得我的文章对你有用,请随意赞赏 🌹 谢谢 !