如何在Docker容器下进行模型的推理?

1、Docker 安装

背景:是在ubuntu系统中联网的情况下安装docker:

参考手册如下:在 Ubuntu 上安装 Docker 桌面 |码头工人文档

使用 apt 存储库安装

在新主机上首次安装 Docker 引擎之前,需要设置 Docker 存储库。之后

可以安装和更新存储库中的 Docker。

===========================设置存储库===============================

1.更新软件包索引并安装软件包以允许使用 基于 HTTPS 的存储库:

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg

2.添加 Docker 的官方 GPG 密钥:

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

3.使用以下命令设置存储库

echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \

  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \

  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

=========================安装Docker引擎========================

  1. 更新包索引:

sudo apt-get update

2.安装 Docker Engine、containerd 和 Docker Compose。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.

3.通过运行映像来验证 Docker 引擎安装是否成功

sudo docker run hello-world

Docker 常用命令:

# 列出本机的所有 image 文件:

docker images

# 列出本机的所有 docker容器:

docker ps -a

# 列出本机的运行中的 docker容器:

docker ps

启动容器

Docker start 容器id

退出容器

Docker stop 容器id

删除容器

Docker rm 容器id

删除镜像

Docker rmi 镜像id

进入容器

Docker exec -it 容器id /bin/bash

2.Docker 环境部署

2.1 docker环境下配置conda

1.拉取anaconda镜像

continuumio/anaconda3 镜像是docker镜像库中star数最高的镜像

docker pull continuumio/anaconda3

用 docker images 指令 查看是否拉取成功。

2.用continuumio/anaconda3镜像创建一个名为test的容器
docker run --name test -idt continuumio/anaconda3

-idt中的 -d 指定容器的运行模式,可以使docker 的服务是在后台运行。但加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

执行完该指令后再查看一下容器列表(docker ps -a)

进入test容器,查看conda位置

docker exec -it test /bin/bash

在test容器内查看容器内的anaconda的位置

whereis anaconda

#或者使用

conda info --envs

查看完后接着退出容器:

#快捷键

Ctrl+d

2.2 docker环境下配置conda

退出容器后,在本地环境中,将需要打包的本地复制到docker中:

docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs

其中 : /home/b/miniconda3/envs/yolo1.7 是自己需要打包的本地环境, test是容器名,/opt/conda是在容器内使用 conda info --envs 查看到的根目录。

将本地文件 /home/b/…/tools 复制到test容器的根目录下。

 docker cp /home/b/.../tools test:/root/

c容器内查看复制结果并退出容器:

3、打包镜像

Docker commit 容器名 镜像名:版本号

Docker commit bb04671a1aab xiao:latest

4、上传dockerhub

5、为要执行的镜像新建容器并推理运行

docker container run --gpus "device=0" -m 28g --name xiao --rm -v $PWD/TestImage/:/workspace/inputs/ -v $PWD/xiao_outputs/:/workspace/outputs/ xiao:v1 /bin/bash -c './predict.sh'

==========================遇到的问题以及如何解决============================

Ps: docker container run 和docker run都是可以执行的。

-x 是 将后面的所有语句作为一条命令进行执行。

执行sh predict.sh 无法激活conda环境的问题

原因在于

原理的 predict.sh 头文件使用的是bash,

#!/bin/sh

Source /opt/conda/envs/segmental activate segmental

使用sh 执行bash文件无法执行source命令,会报如下错误:

正确做法,需要将激活conda的环境变量的路径写入sh 脚本中:

再执命令:

docker container run --gpus "device=0" -m 28g --name xiao --rm -v $PWD/TestImage/:/workspace/inputs/ -v $PWD/xiao_outputs/:/workspace/outputs/ xiao:v1 /bin/bash -c 'sh predict.sh'

可以正确运行:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值