docker初级操作——by蠢鱼

来源:互联网 发布:如何成为网络漫画家 编辑:程序博客网 时间:2024/05/21 20:22

    本地机器配置不给力,要租用阿里云的HPC服务器,怎奈阿里云只提供centos操作系统,而我的所有配置都是基于ubuntu系统,所以为了能够解决系统不统一的矛盾,研究了一下docker,可以通过简单的docker技术解决这个尴尬的问题。为了之后再查找操作,所以把目前用到的docker初级操作记录下来,将来再用的话忘了也好查找。首先在机器上安装好docker,具体可参考docker的官方文档。

#从hub上pull一个镜像下来sudo docker pull ubuntu:14.04#运行镜像,实例化为容器sudo docker run -i -t ubuntu:14.04 /bin/bash#在实例化的容器里操作,修改原始镜像,比如在home下建一个test.cpp文件cd homevi test.cpp#修改完容器后exit退出,然后commit保存修改到镜像中sudo docker commit -m "Your Info of this modification" -a "Info of user" ID(也就是实例化容器时的用户ID) new_name(commit之后的新镜像名)#先创建一个dockerhub账号并登录docker账号sudo docker login,然后输入用户名密码#将修改的镜像push到docker hub,首先要修改一下镜像的名字,比如刚刚修改完的镜像名字为ubuntu,tag为14.04sudo docker tag ubuntu(原镜像名字):14.04(原镜像tag) xhq11(你的docker hub用户名)/ubuntu(传到docker hub上的新名字):14.04(传到docker hub上的新tag)#执行push动作,然后就可以在网页的docker hub上看到push上来的镜像了sudo docker push xhq11/ubuntu:14.04(上行代码修改后的名字和tag)#下载之前上传的镜像到本地,首先要保证本机上没有要pull下来的镜像,有的话要先删除才能pull下来sudo docker pull xhq11/ubuntu:14.04

    至此就完成了docker的初级操作,可以通过docker技术来解决很多轻量级的环境部署问题。比如可以在ubuntu环境下完成相关的软件安装与环境配置并将其打包为一个镜像上传,再在centos系统下把这个镜像pull下来运行,就可以在centos系统的机器上继续之前ubuntu环境下的工作,而不需要重新配置一遍环境,也就解决了开头说过的问题。
    最后还是要吐槽一下阿里云。现在的云产品居然还有只提供centos一种系统的,linux系统那么多,只有一个centos是什么意思。而且还这么贵,一年的租金都可以买一套物理机了,赚钱还是马云爸爸会赚啊。

从主机上拷贝文件到容器:
首先运行一个容器,然后在主机上“sudo docker ps”查看运行的该容器ID,另起一个新的terminal,输入“sudo docker cp path-to-file-in-the-host ID:path-to-file-in-the-container”,例如将主机桌面的上的test.py文件拷贝至容器的/home目录,则”sudo docker cp /home/xhq11/desktop/test.py ID:/home”。拷贝后退出容器,执行上述commit操作修改镜像。
从容器中拷贝文件到主机,sudo cp ID:path-to-file-in-the-container path-to-file-in-the-host。

updated 2017/3/22:
利用docker发布基于ubuntu的ssd-caffe环境配置镜像,供其他host端使用。
    如前所述,老夫之所以会来搞什么什么docker,就是因为本地机器配置不给力(装了titan x也忍受不了动辄三四十个小时的训练)决定租用阿里云的hpc产品,怎奈阿里的hpc只提供centos系统,所以要解决的现实问题是:在centos OS中用ubuntu环境下的配置来训练模型。为解决跨OS问题,决定通过docker来解决。所以本文的关键在于:通过docker来创建ubuntu下ssd-caffe的环境。
    过程其实蛮简单的。由于镜像需要调用host机的nvidia显卡,所以要安装nvidia-docker(https://github.com/NVIDIA/nvidia-docker),然后去docker hub上pull一个带支持gpu的caffe镜像下来放在host机上。只是实例化容器的时候稍微有点不同,之前用docker daemon来运行容器,现在由于要通过nvidia-docker来调用host端gpu,所以运行时daemon用nvidia-docker。如nvidia-docker run -it XXXX:tag即可。进去之后去Liuwei的github上把caffe-ssd下载下来拷贝到容器中去,按照在host端一样的编译安装过程去操作就可以了,最后退出容器的时候commit一下镜像就搞定了,然后push到docker hub上去就可以发布了,蛮easy 的。

0 0