我正在尝试创建一个docker镜像,使其作为服务器运行,为pytorch中的模型提供服务。
我在本地机器上将.pt模型文件转换为.MAR文件,并将.MAR文件复制到docker镜像中。我创建了一个dockerfile:
FROM ubuntu:18.04
ENV TZ=Asia/Shanghai
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
tzdata
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime\
&& echo ${TZ} > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
RUN apt-get install python3 python3-dev python3-pip openjdk-11-jre-headless git wget curl -y
RUN python3 -m pip install torch torchvision torch-model-archiver torchserve==0.2.0
COPY densenet161.mar /model_store/
CMD torchserve --start --model-store model_store --models densenet161=densenet161.mar
EXPOSE 8080我能够创建图像,但当我尝试打开图像并运行代码时,我无法访问该容器
docker exec -it 4b126bd87f21 sh
# torchserve --start --ncs --model-store model_store --models densenet161.mar服务器正在运行。当我运行docker镜像时,它不工作。Docker容器正在运行,但我无法访问服务器。
我不知道问题出在哪里。
发布于 2021-06-22 12:26:46
我希望我能理解这个问题。
当您执行docker run torchserve:local ....时,默认情况下它会运行CMD,即torchserve --start --model-store model_store --models densenet161=densenet161.mar,但由于该命令是在后台运行的,因此新创建的docker容器将立即退出。由于同样的问题,也就是为了防止docker退出,可以添加tail -f /dev/null。
看看torchserve https://github.com/pytorch/serve/blob/master/docker/dockerd-entrypoint.sh#L12的官方docker入口点,他们在末尾跟踪它,以防止docker退出
发布于 2021-06-16 20:56:57
我的建议是重建镜像。
提示:始终为您使用的容器命名--name标记示例: docker run --name container_name
尝试使用bash访问: docker exec -it 4b126bd87f21 bash
https://stackoverflow.com/questions/66551874
复制相似问题