容器之镜像制作
随着容器技术的日益成熟,在云上,Docker+K8s的应用部署方式,越来越流行,用户可以使用Dockerfile打包自己的业务镜像,运行在云上,方便快捷地实现自己的业务场景。华为云的数据湖探索服务(简称DLI)提供的自定义镜像功能就很好的支持了这种场景。使用DLI提供的自定义镜像功能提交作业,用户可以依赖DLI提供的spark或者flink基础镜像,使用Dockerfile将作业运行需要的依赖(文件,jar包或者软件)打包到镜像中,生成自己的自定义镜像,然后在DLI服务作业编辑页选择自己生成的镜像,运行作业。下面展示了制作自定义镜像的步骤:
1. 获取DLI基础镜像
使用命令docker pull {swr仓库地址}/{组织名称}/{镜像名称}:{镜像版本},举例:docker pull swr.cn-north-1.huaweicloud.com/dli/spark:2.3.2-1.0.0-openeuler-20.04-x86_64
镜像命名说明:
<swr-registry>/<org>/<compoent>:<component-ver>-<imagever>-<os>-<os-ver>-<arch>
说明:
swr-registry为对应局点的swr仓库地址
org为组织名 默认为dli
compoent组件名为spark或者flink
component-ver组件版本,spark为2.3.x,2.4.x, flink为1.10.x
imagever:1.0.0,递增
os:openeuler
os-ver: os版本
arch: x86_64或aarch64
2. 利用dockerfile生成自定义镜像
示例展示了如何将tensorflow打包进镜像,生成安装了tensorflow的自定义镜像,主要分为三步:首先设置pip的可用仓库地址,然后使用pip3安装tensorflow算法包,最后将安装了算法包的临时镜像builder里的内容拷贝到基础镜像(这一步主要是为了减小镜像体积),Dockerfile编辑完成之后,通过docker build命令生成最终的自定义镜像,具体的Dockerfile内容示例如下:
ARG BASE_IMG=spark:latest
FROM ${BASE_IMG} as builder
USER root
RUN set -ex && \
mkdir -p /root/.pip && \
echo "[global]" >> /root/.pip/pip.conf && \
echo "index-url = https://mirrors.huaweicloud.com/repository/pypi/simple" >> /root/.pip/pip.conf && \
pip3 install --user --no-cache-dir tensorflow==1.13.1
FROM ${BASE_IMG}
USER root
COPY --from=builder --chown=omm:ficommon /root/.local /home/omm/.local
USER omm
打镜像命令 docker build -t mydli/spark:1.0 --build-arg BASE_IMG=swr.cn-north-1.huaweicloud.com/dli/spark:2.3.2-1.0.0-openeuler-20.04-x86_64 -f Dockerfile .
3. 将自定义镜像上传到SWR服务
有两种上传方式,客户端上传镜像参考https://support.huaweicloud.com/intl/zh-cn/usermanual-swr/swr_01_0011.html,页面上传镜像参考https://support.huaweicloud.com/intl/zh-cn/usermanual-swr/swr_01_0012.html
4. 在DLI服务的作业编辑页,自定义镜像列表选择已经上传的镜像,如果没有共享给DLI,则点击授权,其余配置填写正常后,即可运行作业
- 点赞
- 收藏
- 关注作者
评论(0)