文本挖掘----环境配置篇【2】创建kaggle/python镜像容器(以win7为例,win10家庭版类似)

2,398 阅读5分钟

1.下载kaggle/python镜像

  • 启动Docker

    以管理员方式运行Docker Quickstart Terminal,直到出现如下画面:

  • 下载kaggle/python镜像

输入如下命令:

docker pull registry.cn-hangzhou.aliyuncs.com/kiss_org/kaggle_python

注:这是从阿里容器云下载kaggle/python镜像,并非最新的官方版本,如果想下载最新官方版本,请参考文末的“补充”部分内容。虽然不是最新版,但是可以通过后续容器内对相关软件和库的升级方式,获得最新版本的文本挖掘的相关工具。 镜像大约9.7G,下载需要花点时间,下载完成后进入第2步。

2. 设置kaggle/python镜像容器与本机的交换目录

  • 停止docker

在命令行窗口输入命令:

docker-machine stop

出现如下画面,表示docker已经停止

  • 在本机上新建一个交换目录

    例如:

    F:\Python\textmining

  • 为交换目录设置虚拟机/容器挂载名称

打开VirtualBox管理器,并选中虚拟机列表中的名称为“default”的虚拟机,点击“设置”按钮

在设置界面里选择“共享文件夹”,并点击“添加”按钮

选择之前创建好的目录,选上“自动挂载”,并点击“确定”

此时,可以看到交换目录已经添加成功,名称为“textmining”

记住这个名称,后面会用到

3. 创建kaggle容器

先启动Docker

以管理员方式运行Docker Quickstart Terminal,直到出现如下画面:

然后,执行命令

docker run --name kaggle -v /textmining:/tmp/working  -w=/tmp/working -p 8888:8888 -d -it registry.cn-hangzhou.aliyuncs.com/kiss_org/kaggle_python

命令参数说明:

--name kaggle 表示将容器命名为“kaggle”

-v /textmining:/tmp/working 表示将名称为“textmining”的目录与容器里的“/tmp/working”目录进行绑定,这样“/tmp/working”与“textmining”所代表的目录共享同一个文件路径。

-w=/tmp/working 表示设置容器的工作目录为“/tmp/working”

-p 8888:8888 表示容器的端口8888与容器的宿主机器(此处为名称为“default”的虚拟机)端口8888进行绑定

-d 表示以后台方式运行容器

-it 表示与容器之间的连接方式

上述命令执行完成后,如果创建成功,会打印出一串字符串,为容器的运行时ID,并可以通过命令

docker ps

查看当前正在运行的容器,如下图

可以看到名称为“kaggle”的容器正在运行,以后我们可以通过名称“kaggle”对该容器进行各种操作。

4. 连接kaggle容器

执行命令

docker attach kaggle

并按两下“回车”,进入容器,如下图所示

可以看到,当前以“root”用户登录到了容器,并且当前目录为“/tmp/working”,在当前提示符下执行命令

python

进入python环境,可以看到如下图:

在python环境下,执行命令:

exit()

退出python环境,回到容器环境。 自此,kaggle容器创建成功!

5. 开启 jupyter notebook 服务

  • 设置本机到虚拟机的端口映射

    接上步,执行命令

    exit
    

    退出并关闭容器,并在当前命令行窗口执行命令

    docker-machine stop
    

    停止docker,如下图

    打开VirtualBox管理器,并选中虚拟机列表中的名称为“default”的虚拟机,点击“设置”按钮

在设置界面里选择“网络”,展开“高级”下拉菜单,勾选“接入网线”,并点击“端口转发”按钮

在端口转发设置页码,点添加规则按钮,创建新的转发规则,如下图

这条规则的意思是将本机的8888端口映射到虚拟机的8888端口,大家如果还记得之前我们在创建“kaggle”容器的时候,我们已经将虚拟机的8888端口与容器的8888端口绑定。因此当容器运行时,我们可以通过访问本机的8888端口与容器进行数据交互了。 一路点击“ok”,完成本机到虚拟机的端口映射设置

  • 启动 jupyter notebook 服务器

    以管理员方式运行Docker Quickstart Terminal,直到出现如下画面:

    执行如下命令,启动容器

    docker start kaggle
    

    如下图所示

    执行命令

    docker attach kaggle
    

    并按两下“回车”,进入容器,如下图所示

    在当前命令行窗口执行命令:

    jupyter notebook --allow-root --no-browser --ip="0.0.0.0" --notebook-dir=/tmp/working
    

    命令参数说明:

    --allow-root 表示允许root用户启动jupyter notebook服务

    --no-browser 表示不启动浏览器,仅在后台运行。

    --ip="0.0.0.0" 表示允许任意ip访问

    --notebook-dir=/tmp/working 表示将jupyter notebook的默认目录设为/tmp/working

    如下图所示

将红色框中内容拷贝到文本文件,并将0.0.0.0替换成localhost,如下图所示:

然后再将改网址,粘贴到浏览器地址栏,并访问,如下图所示:

至此,文本挖掘的开发环境初步搭建完毕。

6.补充

  • 下载最新的官方镜像kaggle/python

首先,配置国内镜像服务器 以管理员方式运行Docker Quickstart Terminal,直到出现如下画面:

执行命令

docker-machine ssh default

进入docker虚拟机,如下图所示

在当前命令行窗口执行命令

sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=http://f1361db2.m.daocloud.io |g" /var/lib/boot2docker/profile

然后,执行命令

exit

退出docker虚拟机,并在当前命令行窗口执行命令

docker-machine restart default

重启docker虚拟机,成功后,在当前命令行窗口执行命令

docker pull kaggle/python

开始下载最新版的镜像。 不过,这里并不十分推荐下载最新版的镜像,因为最新版的镜像是只针对FMA指令集优化的,如果你的机器的CPU不支持FMA指令集,将无法正常运行kaggle镜像中的数据挖掘工具

  • 一些常用docker命令

查看当前运行的容器列表: docker ps

查看所有容器列表:docker ps -a

删除容器:docker rm xxx xxx为容器名或者容器id

启动容器:docker start xxx xxx为容器名或者容器id

停止容器:docker stop xxx xxx为容器名或者容器id

连接容器:docker attach xxx xxx为容器名或者容器id

查看镜像列表:docker images

删除镜像:docker rmi xxx xxx为镜像id

启动docker虚拟机:docker-machine start xxx xxx为虚拟机名称

停止docker虚拟机:docker-machine stop xxx xxx为虚拟机名称,不加xxx,默认停止名称为“default”的虚拟机