工作需要,客户想在K8s集群中搭建Greenplum集群,要求操作系统是麒麟V10。虽然数据库不建议安装在k8s中,但客户就是上帝,那就试试吧。本文讲解第一步:制作一个基于麒麟V10的Docker镜像。
- 银行麒麟官网下载镜像。此次下载服务器版。
- 使用麒麟V10的ISO镜像,最小化安装虚拟机。此步很简单,省略。
- 构建镜像文件 3.1 在虚拟机中创建准备目录
mkdir /kylin
mkdir -p /kylin/usr /kylin/dev
3.2 复制相关文件,并创建软链接
cp -a /usr/lib /usr/lib64 /usr/bin /usr/share /kylin/usr/
ln -s /kylin/usr/lib /kylin/lib
ln -s /kylin/usr/lib64 /kylin/lib64
ln -s /kylin/usr/bin /kylin/bin
完成后,显示如下:
[root@localhost kylin]# ll
总用量 0
lrwxrwxrwx 1 root root 8 9月 20 10:14 bin -> /usr/bin
drwxrwxr-x 2 gpadmin gpadmin 6 9月 20 10:07 dev
lrwxrwxrwx 1 root root 7 9月 20 10:13 lib -> usr/lib
lrwxrwxrwx 1 root root 9 9月 20 10:14 lib64 -> usr/lib64
drwxrwxr-x 6 gpadmin gpadmin 54 9月 20 10:09 usr
3.3 复制配置以及root目录
cp -a /etc /root ./
# 完成后目录如下:
[root@localhost kylin]# ll
总用量 12
lrwxrwxrwx 1 root root 8 9月 20 10:14 bin -> /usr/bin
drwxrwxr-x 2 gpadmin gpadmin 6 9月 20 10:07 dev
drwxr-xr-x 142 root root 8192 9月 20 10:15 etc
lrwxrwxrwx 1 root root 7 9月 20 10:13 lib -> usr/lib
lrwxrwxrwx 1 root root 9 9月 20 10:14 lib64 -> usr/lib64
dr-xr-x--- 4 root root 169 9月 20 10:04 root
drwxrwxr-x 6 gpadmin gpadmin 54 9月 20 10:09 usr
3.4 裁剪脚本
rm -rf etc/profile.d/flatpak.sh etc/profile.d/gawk.csh etc/profile.d/gawk.sh etc/profile.d/lang.csh etc/profile.d/lang.sh etc/profile.d/system-info.sh
3.5 测试镜像目录
[root@localhost kylin]# chroot .
[root@localhost /]#
如无问题,可打包:
tar -C kylin-docker-fs/ -z -c . -f kylin-docker.tar.gz
- 构建docker镜像 首先把kylin-docker.tar.gz文件移动到自定目录,用于构建镜像。然后在该目录下,编辑DockerFile,写入内容如下:
FROM scratch
ADD kylin-docker.tar.gz /
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="Kylin Base Image" \
org.label-schema.vendor="Kylin" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20230920" \
org.opencontainers.image.title="Kylin Base Image" \
org.opencontainers.image.vendor="Kylin" \
org.opencontainers.image.licenses="GPL-2.0-only" \
org.opencontainers.image.created="2023-09-20 10:36:00+00:00"
CMD ["/bin/bash"]
保存后,构建镜像测试
docker build . -t kylin:10sp1
[+] Building 61.3s (3/4) docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile [+] Building 62.5s (3/4) docker:default
[+] Building 63.9s (3/4) docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
[+] Building 146.3s (5/5) FINISHED docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 565B 0.0s
=> [internal] load build context 13.7s
=> => transferring context: 2.59GB 13.7s
=> [1/1] ADD kylin-docker.tar.gz / 66.0s
=> exporting to image 66.6s
=> => exporting layers 66.6s
=> => writing image sha256:41711df538b28bdb426cb861f680fef4ec4f67af6f372a23e6a813034f3f1c30 0.0s
=> => naming to docker.io/library/kylin:10sp1 0.0s
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview
完成后,可查看镜像信息:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kylin 10sp1 41711df538b2 3 minutes ago 6.24GB
greenplum/kyv10 v1 399f3fd46947 6 days ago 2.9GB
gareenbeam/kyv10 v4 7a85ef121eb3 6 days ago 2.85GB