文章目录
0. 应用场景需求
当需要对既有镜像更新依赖或文件以实现新功能时,需要对官方镜像进行DIY。下文以arm版SuperMap云套件10.2版本增加达梦数据库依赖为例进行说明,原理是使用正在运行的容器为模板,增加文件或依赖后提交成镜像,同时更新tag便签符合镜像库要求,然后推送到镜像库,使用时指定成该镜像即可。
1. 实现步骤
1.1 首先云套件新建节点,以该节点为模板
云套件新建节点,查看节点所在宿主机,然后找到容器ID:通过shell命令根据节点名称查看docker ps | grep "容器名称"
带IP的那一行即为要找的容器。
1.2 复制依赖或文件进入容器
该步骤用途是把需要在容器里新增的内容拷贝进去,拷贝路径自定义,不知道拷贝到哪个位置也可先进入容器查看文件目录再拷贝。docker cp dm_arm_lib 容器ID:/opt/UGO
1.3 进入容器
docker exec -it 容器ID /bin/bash
1.4 容器内授权文件权限(默认只有读写权限,无执行权限)
进入容器后对拷贝进来的文件进行自己需要的操作。1.4-1.6步骤属于容器内部的自定义操作。chmod 777 /opt/UGO/dm_arm_lib/*
1.5 查看“libcrypto.so”软连接并删除软连接
删除软连接目的是拷贝文件替换ls -il /opt/UGO/Bin
rm -rf /opt/UGO/Bin/libcrypto.so
1.6 复制达梦依赖到/opt/UGO/Bin目录下
cp -a /opt/UGO/dm_arm_lib/* /opt/UGO/Bin/
1.7 提交容器成镜像
容器自定义操作完成后提交成镜像并推送到镜像库使用。
提交命令参见docker commit 命令
docker commit 命令参数释义如下
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "wubingfeng" -m "Used to solve spatial analysis problems." -p bfce09e458d0 172.17.1.1:5000/supermap/iserver-gisapplication:10.2.0-arm64-21.11.19
1.8 镜像推送到仓库
docker push 172.17.1.1:5000/supermap/iserver-gisapplication:10.2.0-arm64-21.11.19
1.9 使用新镜像
在云套件中新建节点(或者不新建,针对既有的节点更新镜像),然后在云套件管理页面对应节点上点击“修改镜像”,填入“172.17.1.1:5000/supermap/iserver-gisapplication:10.2.0-arm64-21.11.19”稍等片刻即可。