使用具有entrypoint命令的镜像

问题描述

当镜像中使用了entrypoint命令时,启动解密会失败。

可能原因

镜像中有entrypoint命令时,启动容器会优先执行entrypoint命令,导致启动解密失败。

解决方案

通过--entrypoint=/usr/bin/unshare替换镜像中的entrypoint命令,并在镜像名后增加解密相关命令,通过制作启动文件制作的启动脚本调用业务脚本进行推理。

容器启动命令样例参考

docker run -it \
 --env PSK_KEY=${ai-tool加密工具生成的预共享密钥口令密文} \
 --env CERT_KEY=${ai-tool加密工具生成的CFS证书口令密文} \
 --restart=on-failure:5 \
 --security-opt seccomp=seccomp_profile.json  \
 --security-opt apparmor=cfs_profile  \ 
 --device=/dev/fuse --net=aiguard  \
 --device=/dev/davinci0 \
 --device=/dev/davinci_manager \
 --device=/dev/devmm_svm \
 --device=/dev/hisi_hdc \
 -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
 -v ${挂载文件的根目录}/secrets:/run/secrets \ 
 -v ${挂载文件的根目录}/job:/job  \  
 --entrypoint=/usr/bin/unshare  \
 --cpus=10 -c 512 -m 2048m 镜像名:tag    \
 --propagation unchanged -m -r /bin/bash -c 'export LD_LIBRARY_PATH=/job/crypto_fs/lib:$LD_LIBRARY_PATH;./ai-tool run ./crypto_fs/bin/crypto_fs  /job/encrypt /job/dec/  --cert_file=/job/cfs.pem --pri_key_file=/job/cfs.key --ca_file=/job/ca.pem  -p  "/job/dec/sdk/infer_start_cfs.py" -K 10000 -k --port 2025'