只是为了简单发布 TensorFlow/serving 服务……
docker下载地址https://store.docker.com/editions/community/docker-ce-desktop-windows
使用Docker Quickstart terminal
快速初始化,建立Linux虚拟机,分配虚拟ip等等
环境
1 | //查看docker环境 |
image
1 | // 查看所有image |
container 操作
1 | // 查看所有容器 |
container 生命周期
1 | // 创建新的容器并运行 |
例子:tensorflow/serving
用于tensorflow模型的web发布
一. pull别人已有的image
1 | $ docker pull tensorflow/serving |
二.将pb文件放到虚拟机共享文件之下
1 | // 注意 虚拟机默认共享文件目录:c:Users. |
三.启动容器
1 | // tensorflow/serving image 环境变量 |
四.URL
详见https://www.tensorflow.org/serving/api_rest?hl=zh-cn
1 | //Model status API |
巨坑–windows端口映射问题
https://github.com/moby/moby/issues/15740
https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/
在linux下,端口映射完全没有问题。但是在windows下,就有个巨大问题。
我们按照步骤做完之后发现,并不能愉快的访问http://localhost:... 而且也没法通过局域网访问!!!!!!
但是我们用$ docker ps
查看,发现0:0:0:0:8080:8080
端口明明已经转好了!
1 | 原来docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows。 |
好的那么我们仔细看一下几个ip:
容器ip: 使用$ docker inspect
查看容器ip发现是:172.17.0.2
虚拟机ip:可以到kitematic看,也可以通过$ docker-machine ip
查看,发现默认为:192.168.99.100
主机ip: 172.16.119.212
试验一下,发现只能访问虚拟机ip 。这意味着-p只是映射了 容器=》linux虚拟机 之间的端口,这导致windows下只能用本机访问虚拟机ip,没法通过局域网访问, 这往往很蠢。。
解决方法:
既然我们缺失了 主机ip=>虚拟机ip 的映射,那么我们加上映射不就可以了?
可以在 VitualBox =》 网络 =》 端口转发 中设置转发规则,将主机ip 和 子系统ip 进行映射。
这样我们就可以通过别的电脑来访问容器中的程序了。