您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
如何用Docker成为更高效的数据科学家?
你的,镜像,容器如何用Docker成为更高效的数据科学家?
发布时间:2016-12-08加入收藏来源:互联网点击:
从你的 Docker 镜像创建和运行容器
现在你已经准备好让这一切工作起来了!我们可以通过执行以下命令来调出环境:
同样 GitHub 也有:https://github.com/hamelsmu/Docker_Tutorial/blob/master/basic_tutorial/run_container.sh
运行完这个命令之后,你的容器就运行起来了!Jupyter 服务器也运行起来了,因为在该 Dockerfile 最后有这个命令:
CMD [“./run_jupyter.sh”]
现在你应该可以通过其使用的端口访问你的 Jupyter Notebook 了——在这个案例中可通过 http://localhost:7745/ 访问,密码是 tutorial。如果你是通过远程的方式运行这个 Docker 容器,你还必须设置本地端口转发,这样你才能通过你的浏览器访问你的 Jupyter 服务器。端口转发介绍:https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
与你的容器交互
一旦容器设置完成并运行起来,下面这些命令就有用了:
·为容器附加一个新的终端会话。如果你需要安装一些新软件或使用 shell,这会很有用。
·将你的容器的状态保存为新镜像。即使你一开始就在 Dockerfile 中配置了你想安装的所有库,随着时间的推移,你也可能还是需要对容器的状态进行很大的调整——通过交互来增加更多库和软件包。将你的容器的状态保存为镜像是很有用的,你后面可以将其分享出去或在上面加层。你可以使用 docker commit CLI 命令将容器状态保存为新镜像:
docker commit <container_name> new_image_name:tag_name(可选的)
比如说,如果我想将名为 container1 的容器的状态保存为名为 hamelsmu/tutorial:v2 的镜像,我可以直接运行这个命令:
docker commit container_1 hamelsmu/tutorial:v2
你可能会疑惑镜像名之前的 hamelsmu/ 是什么——这只是为了让之后将该容器推送到 DockerHub 的工作更轻松,因为 hamelsmu 是我的 DockerHub 用户名(后面会再谈这个问题)。如果你的工作要使用 Docker,那么你的公司很可能有一个内部私有的 Docker 库,你也可以将你的 Docker 推送到那里。
·列出运行中的容器。当我忘记现在正在运行的容器的名称时,我就常常使用这个命令:
docker ps -a -f status=running
如果你在使用该命令时没有加上 status=running,那么你就会看到你系统上的所有容器的列表(即使已经不再运行的容器也在)。这对查找旧容器而言很有用。
·列出你在本地保存的所有镜像。
docker images
·将你的镜像推送到 DockerHub(或其它地方)。如果你想与其他人分享你的工作或将镜像保存到云上,这个命令就会很有用。注意你在做这件事时可不要分享任何私人信息(DockerHub 上也有私有库)。
首先创建一个 DockerHub 库并给你的库起一个适当的名称,参考这里:https://docs.docker.com/docker-hub/repos/。然后要运行 docker login 命令来连接到你在 DockerHub 或其它注册位置的账户。比如,要推送一个镜像到这个容器(https://hub.docker.com/r/hamelsmu/tutorial/),我首先必须将我的本地镜像命令为 hamelsmu/tutorial(我可以选择任意标签名)。比如说,这个 CLI 命令就为:
docker push hamelsmu/tutorial:v2
将之前提到的 Docker 镜像推送到这个库,其标签为 v2,参考:https://hub.docker.com/r/hamelsmu/tutorial/tags/。需要指出:如果你公开了你的镜像,那么其他人就可以直接在你的镜像上加层,就像本教程中我们在 ubuntu 镜像上加层一样。对于想要重现或延展你的研究的其他人来说,这非常有用。
你已经掌握了
现在你知道如何操作 Docker 了,你可以执行以下任务:
·与同事和朋友共享可重现的研究。
·通过将你的代码暂时迁移到所需的更大的计算环境中,无中断地赢得 Kaggle 竞赛。
·在你的笔记本电脑上的 Docker 容器内进行本地的原型开发,然后毫不费力地将同样的计算过程无缝迁移到服务器上,同时还能保留你喜欢的本地环境配置(你的别名、vim 插件、bash 脚本、自定义提示等)。
·使用 Nvidia-Docker 在 GPU 计算机上快速实例化运行 TensorFlow、PyTorch 或其它深度学习库所需的所有依赖包。(如果你从头开始做,这个过程将非常艰辛。)参阅后面的彩蛋。
·将你的模型作为应用发布,比如用作从 Docker 容器提供预测的 REST API。当你的应用 Docker 化了以后,就可以按照需要轻松地随意复制。
进阶阅读
到这里我们也只学到了 Docker 的一点皮毛,前面还有很多东西值得掌握。我很关注 Docker 领域,我认为数据科学家会常常遇到它,希望这篇文章能让你有足够的信心开始使用它。下面这些资源曾在我的 Docker 之旅中为我提供过帮助:
·有用的 Docker 命令:https://zaiste.net/posts/removing_docker_containers/
·更有用的 Docker 命令:https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
·Dockerfile 参考:https://docs.docker.com/engine/reference/builder/
·如何创建和推送到 DockerHub 上的库:https://docs.docker.com/docker-hub/repos/
彩蛋:Nvidia-Docker
我学习 Docker 最早的原因是要在单个 GPU 上做深度学习模型的原型开发,然后在我需要更多计算资源时再迁移到 AWS 上。我当时也在学习 Jeremy Howard 的出色的 Fast.AI 课程(http://www.fast.ai/),并且希望与其他人分享我的原型设计。
但是,要将英伟达 GPU 的驱动程序等所有依赖包都包含以来,你不能使用 Docker,而是要用 Nvidia-Docker(https://github.com/NVIDIA/nvidia-docker)。这比使用 vanilla Docker 要多花一些功夫,但只要你理解了 Docker,做起来就很简单。
我将我的 Nvidia-Docker 设置放在这里:https://github.com/hamelsmu/Docker_Tutorial/tree/master/gpu_tutorial,你可以用这个来进行练习。
回答于 2019-09-11 08:43:50
谢谢回答这么专业的问题。docker自2013年来一直火热。无论是从 github 上的代码活跃度,还是
Redhat
在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。这只是一款提供开源的应用容器引擎的软件。如果想熟练运用。需要专业学习。但想成为科学家没有捷径。只有更努力学习。一分天才需九分努力。上一篇:骑自行车的时候运动摄像机如何安装能够拍出更酷的画面?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |