Home Archives Categories Tags Docs

使用 Docker 构建深度学习框架 TensorFlow + Jupyter 交互环境

发布时间: 更新时间: 总字数:1801 阅读时间:4m 作者: 分享

UCloud近期将会推出AI as a Service(AI在线服务UAI-Service)产品,是面向AI在线Inference服务的大规模分布式计算平台。同时UAI-Service团队同事最近也在玩一个很火的深度学习框架: TensorFlow, 感觉很高大上,还收获了好多赞,我想试玩一下,所以搭建过程要简单、快,最好不搞乱本机环境,于是就有了本文。

关于 Docker

1.1 为什么使用 Kitematic

Kitematic: Run containers through a simple, yet powerful graphical user interface.

通过简单并且强大的图形用户界面管理容器。

Simple is better. 毕竟本文的重点不在这。

1.2 下载、安装 Kitematic

Mac安装:

https://download.docker.com/mac/stable/DockerToolbox.pkg

Windows安装:

https://download.docker.com/win/stable/DockerToolbox.exe
or
链接: http://pan.baidu.com/s/1qYU7MKO 密码: wsug

因为我使用Mac,所以后面以 Mac 为准,相信 Windows 大同小异。

下载安装很简单,先讲讲 Kitematic 做了什么事吧,安装完我们会发现 Application 里面多了三个新App:

注: Docker Quickstart Terminal,Kitematic(Beta),VirtualBox

  • 第一个:终端,它会帮你配置好Docker环境(比较笼统,后面会带你敲一遍命令来理解);

  • 第二个:用户界面(Powerful graphical user interface);

  • 第三个:这个就奇怪了,为什么帮我装了一个 VirtualBox 虚拟机?上图先。

注:官网配图 1

注:官网配图 2

Docker 的基础是 Linux 的 LXC(Linux Containers)等技术。

机智的同学们比较上面两张图再加引用的一句话,不难得出 Mac 的 OSX 系统需要借助 Linux 虚拟机,而 Kitematic 帮我们装了一个Orachle VM VirtualBox 顺带还创建了轻量级的 DOCKER_HOST:default。

因为我使用公司内部的自建仓库,这里为自己做一个小备忘:

自建仓库的访问必须通过 HTTPS,简单的方法是配置一下信任(我怎么总喜欢简单的,被Python 的 Simple is better 洗脑了),Mac 可以通过以下命令:

docker-machine create --driver virtualbox --engine-insecure-registry IP:PORT dev

来重新创建一个 DOCKER HOST(即上图已关闭的 dev)来达到配置。

EXTRA_ARGS="--insecure-registry IP:PORT"

同样的效果,即:使用 IP:PORT 作为默认仓库地址,而且信任它。

我司也有容器服务 UCloud - 容器集群 UDocker,我体验过,很棒哦。

1.3 Kitematic 的使用

一打开界面果然 simple,能点的按钮很少,我们直接跳过这一步,先去看命令行界面如何使用,回过头来就很容易理解了,先放两张截图。

注: 搜索和创建 Containers的界面(如果没有对应的 images,会先拉取镜像)。

注: Containers 的管理界面,右侧 Home 标签左侧是 Log,右侧是 Web Preview,Settings标签 则包含容器创建时的参数配置(port,volumes等),修改需要重启生效(Kitematic也会帮你重启)。

1.4 Docker-CLI 的使用

每次你打开 Kitematic用户界面 的时候因为依赖它都会先启动 default 虚拟机,关闭的时候也会自动关闭。

注: 可以点击左下角齿轮图标打开用户界面工具的配置,并反选为:“关闭Kitematic的时候不关闭Linux VM”。

为了演示 Docker-CLI 的使用,我们关闭 Kitematic 也关闭 Linux VM,纯使用CLI来操作一遍:

我们先打开 Linux VM

执行命令:

docker-machine start

结果:

Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

跟随结果的最后一句,执行命令:

docker-machine env

结果:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/kevin/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)

继续跟随最后两句,执行命令:

eval $(docker-machine env)

结果:无

至此就完成了!

来测试一下:

注: 如果你跟随本文到这一步,那么你的 docker images 结果应该是空的

关于 TensorFlow

2.1 说明

马上就要完成啦,在这里你可以选择使用用户界面或者 CLI(命令行界面) 来获得一个 TensorFlow 官方镜像,然后创建容器开始你的 TensorFlow helloworld 之旅。

这里使用的镜像是 https://hub.docker.com/r/tensorflow/tensorflow/ 熟悉的:

Kitematic 操作很简单仍旧忽略,我们看一下 CLI 下的命令。

2.2 获取 TensorFlow 镜像:

docker pull tensorflow/tensorflow
or
docker pull registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow

有1G多,官方的 Docker Hub 仓库很慢,可以使用阿里云得docker镜像。

2.3 创建 TensorFlow 容器:

docker run -ti -p 8888:8888 tensorflow/tensorflow

注: -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开,一般同时出现,即: -ti ,-p 是 port,将容器的8888端口映射到Mac的8888端口,因为包含多个创建配置,这里建议使用 Kitematic 用户界面来创建本容器。

查看所有容器状态(加 -a 不过滤停止状态):

docker ps -a

通过容器名字(下图最后一列 NAMES)查看容器 logs:

docker logs tensorflow

注: 点击放大

2.4 登录 Jupyter 交互环境

[I 14:52:06.852 NotebookApp] The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/?token=a0966ebb68f61ec5c678ee811358ef583ec974fe371c6f48
[I 14:52:06.852 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 14:52:06.853 NotebookApp] 
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=a0966ebb68f61ec5c678ee811358ef583ec974fe371c6f48

注1: Copy/paste this URL into your browser when you connect for the first time, …

注2: 如果你使用 Kitematic 用户界面,点击 CONTAINER LOGS右侧的 WEB PREVIEW 即可,如果是首次登陆,WEB界面会让你输入token,你知道在哪可以找到。

最后

参考

相关文章
最近更新
最新评论
加载中...