本地机器配置不给力,要租用阿里云的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 home
vi 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.04
sudo 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 的。

docker初级操作相关推荐

  1. python 对docker的操作 :docker-py教程

    python 对docker的操作 :docker-py教程 见官方文档: https://docker-py.readthedocs.io/en/latest/

  2. Docker 之 Docker基础操作

    第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1)   指定 IP,DNS 网络位启动Docker容器 a)  docke ...

  3. Docker初级选手(一)

    Docker初级选手(一) 卸载 1.卸载docker包 yum remove docker-ce 2.因为主机上的图像.容器.卷.自定义配置不会自动删除,所以需要手动删除相关文件 rm -rf /v ...

  4. Docker 容器操作

    容器是 Docker 又一核心概念.简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用. ...

  5. 天池数据竞赛docker提交操作学习

    天池数据竞赛docker提交操作学习 由于最近天池的比赛都要求使用docker来提交结果,所以在此记录一下docker提交到天池的整个流程. 目前正在做的,全球人工智能技术创新大赛[热身赛二]比赛链接 ...

  6. docker镜像操作

    docker镜像操作 实验环境 操作系统:CentOS Linux release 7.3.1611 (Core)docker版本:17.11.0-ce 镜像操作 列出镜像 查看已经下载下来的镜像: ...

  7. Docker 容器操作 1

    2019独角兽企业重金招聘Python工程师标准>>> 容器是 Docker 又一核心概念.简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模 ...

  8. Docker镜像操作相关

    Docker镜像操作相关 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub[ https://hub.docker.c ...

  9. 【保姆级教程】Docker基础操作篇-Dokerfile(含源码)

    Docker系列文章: 你好!Docker[概念+源码+保姆式教程] [保姆级教程]Docker进阶操作篇-Compose(含源码) Docker常用命令 [保姆级教程]VMware+CentOS 7 ...

最新文章

  1. 李飞飞团队CVPR论文:让AI识别语义空间关系(附论文、实现代码)
  2. docker privileged 权限 参数
  3. ASP字符串函数大全
  4. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令
  5. java操作redis简单学习3
  6. hibernate注解的测试
  7. 小波分析理论与matlabr2007实现_HHT变换基本理论
  8. java多组List所有的排列组合
  9. 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)
  10. ApsaraDB for SQL Server 混合云场景一种解决方案
  11. Android程序设置软件图标
  12. nginx gif伪装php,nginx空白图片(empty_gif模块)
  13. 2015到3020计算机参考文献,同等学力相关论文范文素材,与计算机网络参考文献2016年相关硕士毕业论文...
  14. 浏览器JSON的插件(JSON-handle)使用问题
  15. 期刊类文章左下角添加横线的方法
  16. 租房软件需要的是简单易用
  17. 合作创新,携手共赢 共筑坚实数字底座
  18. 如何快速梳理领域文献
  19. 哈工大SCIR倾力打造NLP新书,详解预训练语言模型
  20. JScript.NET或者JScript是什么?

热门文章

  1. 【算法分析与设计】查找第K大/小元素问题
  2. 【数据结构与算法】共享栈的Java实现
  3. 《程序员代码面试指南》第二章 链表问题 反转部分单向链表
  4. 使用CountDownLatch模拟高并发场景
  5. webpack实用配置
  6. php+mysql封装增删查改
  7. parasoft Jtest 使用教程:清除错误消息与运行内置测试配置
  8. 你真的了解load方法么?(转载)
  9. 一个牛人在美国的跳槽经历(有感)
  10. 前端开发JS的学习之AngularJS库