在Tensorflow服务映像上运行Docker时遇到错误

时间:2019-05-23 18:47:51

标签: tensorflow-serving

我已经训练了Tensorflow对象检测模型。我正在尝试使用docker上的tensorflow服务映像进行REST请求。 (遵循https://github.com/tensorflow/serving的指示)

TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata/"

 docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/my_model:/models/work_place_safety" \
     -e MODEL_NAME=work_place_safety \
     tensorflow/serving &

我正面临以下错误消息-

$ C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe:来自守护程序的错误响应:挂载被拒绝: 源路径“ C:/ Users / Desktop / models / serving / tensorflow_serving / servables / tensorflow / testdata / saved_model_work_place_safety; C” 不存在,Docker也不知道。 参见'C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe运行--help'。

我想知道为什么它在源路径的末尾包含“; C” 并引发错误。

非常感谢您的帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

通过在/中的$之前添加Git bash解决了该问题。

docker run -t --rm -p 8501:8501 \
    -v /$TESTDATA/my_model:/models/my_model \
     -e MODEL_NAME=my_model \
     tensorflow/serving &

答案 1 :(得分:0)

据我了解,此错误可能有两个原因。

  1. 您已经直接从Github克隆了TF Serving Repo,并且您正在使用$TESTDATA/my_model作为源文件。路径$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata/

  2. 中可能没有名为“ my_model” 的文件夹
  3. 您可能已经保存了自己的模型,名称为“ my_model” ,并将其放置在$TESTDATA路径中。在这种情况下,您需要将这些更改提交给Docker,以便服务器理解。将我们的更改提交给docker的代码如下所示:

    sudo docker run -d --name sb tensorflow/serving
    
    sudo docker cp /C:/Users/Desktop/models/serving/tensorflow_serving/servables/tensorflow/testdata/my_model sb:/models/work_place_safety
    
    sudo docker commit --change "ENV MODEL_NAME my_model" sb Ashwini_container
    
    sudo docker kill sb
    
    sudo docker pull tensorflow/serving
    
    sudo docker run -p 8501:8501 --mount type=bind,source=/C:/Users/Desktop/models/serving/tensorflow_serving/servables/tensorflow/testdata/my_model,target=/models/work_place_safety -e MODEL_NAME=export -t tensorflow/serving &
    

有关更多详细信息,您可以参考the link