制作容器镜像

  1. 切换root用户,执行以下步骤准备Dockerfile文件。

    1. 进入镜像打包文件所在目录,执行以下命令创建dockerfile文件(文件名示例“Dockerfile”)。
      vim Dockerfile
    2. 参见编写说明编写,写入后执行:wq命令保存内容。
    3. 请确保制作过程中需要的文件均符合用户所在组织的安全要求。

  2. 进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”

    docker build  --no-cache=true -t 镜像名:镜像tag .

    例如:

    docker build  --no-cache=true -t cfs-infer:v1 .

    命令解释如所表1示。

    表1 命令参数说明

    参数

    说明

    -t

    指定镜像名称。

    镜像名_系统架构:镜像tag

    镜像名称与标签,请用户根据实际情况写入。

    当出现“Successfully built xxx”表示镜像构建成功。

  3. 构建完成后,执行以下命令查看镜像信息。

    docker images

    显示示例:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    cfs-infer           v1                  fffbd83be42a        X minutes ago       XXXMB

  4. (可选)若需要将镜像导入其他设备运行,可执行以下命令导出镜像。

    docker save -o cfs-infer.tar cfs-infer:v1

    “-o”:导出的镜像压缩包名称,例如:cfs-infer.tar。

    “ cfs-infer:v1”镜像名_系统架构:镜像tag

编写说明

Dockerfile编写示例。
# 基础推理镜像  
FROM ${基础镜像名称}  # 根据实际业务选择对应镜像,需保证包含推理业务所需的基本库

USER root
RUN useradd -d /home/hwMindX -u uid -m -s /usr/sbin/nologin hwMindX && \  # 若本身镜像内包含此用户,则无需创建
    chmod 700 /home/HwHiAiUser && \
    mkdir /run/secrets/  && \
    chown HwHiAiUser:HwHiAiUser /run/secrets  && \
    chmod 700 /run/secrets && \
    mkdir /job && \
    chown HwHiAiUser:HwHiAiUser -R /job && \
    echo 'umask 077' >> /etc/profile 

# 将镜像打包文件拷贝至/job
COPY --chown=HwHiAiUser:HwHiAiUser . /job/

WORKDIR /job
RUN tar -zxvf openssl-{version}.tar.gz
WORKDIR openssl-{version}
RUN ./config && \
    make && \
    make install

# HwHiAiUser is used as the default user of the container
USER HwHiAiUser
ENV LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
WORKDIR /job
  • 驱动默认安装的用户与用户组为HwHiAiUser用户及其用户组,制作镜像时需保证镜像中用户在HwHiAiUser用户的用户组内。
  • 若推理容器运行用户为root用户,该场景下权限控制可能存在安全风险,容器内不建议使用root用户进行推理。
  • 若推理容器运行用户必须为root用户,则驱动安装时请使用--install-for-all参数,且安装后所有用户拥有权限,此参数存在使用安全风险,详细内容请参见驱动与固件安装指导。
  • uid请用户根据实际内容填写。