设为首页 收藏本站
查看: 1529|回复: 0

[经验分享] docker镜像的操作

[复制链接]

尚未签到

发表于 2015-4-18 06:31:00 | 显示全部楼层 |阅读模式
  

  

在主机上列出镜像



sudo docker images
DSC0000.png
  每从Docker Hub下载一个镜像就会启动相对的创建一个容器
  在镜像列表中看到三个重要的东西:


  • 来自什么镜像源,例如ubuntu
  • 每个镜像都有标签,例如14.04
  • 每个镜像都有镜像ID
  运行一个带标签镜像的容器:



sudo docker run -t -i ubuntu:14.04 /bin/bash
  如果不指定一个镜像的版本标签,例如你只使用Ubuntu,Docker将默认使用Ubuntu:latest镜像
  建议使用镜像时指定一个标签


获取一个新的镜像
  用docker pull命令来下载



sudo docker pull centos
  注:有时候下载比较慢,可以使用国内第三方库下载



sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
  


查找镜像
  可以去网上的查找docker hub 的镜像
DSC0001.png
  或者使用命令行



sudo docker search sinatra
DSC0002.png
  可以看到列表中有镜像名称、描述、Stars(衡量镜像的流行度-如果用户喜欢这个镜像他就会点击stars)和官方自动构建镜像状态
  Stackbrew维护者官方仓库源,镜像源是自动构建的,可以验证图像的来源和内容
  两种类型的镜像,像ubuntu镜像,我们称它为基础镜像或者根镜像
  这些镜像是由docker公司提供建立、验证和支持
  还有一种就是用户镜像,例如training/sinatra


创建自己的镜像
  如果公共镜像源中没有想要的镜像,可以跟新镜像或者创建镜像达到目的


  • 1.我们可以从已经创建的容器中更新镜像,并且提交这个镜像。
  • 2.我们可以使用Dockerfile指令来创建一个镜像。
  更新一个镜像,首先我们要创建一个我们想更新的容器



sudo docker run -t -i training/sinatra /bin/bash
  在我们的容器内添加json



gem install json
  然后通过用docker commit来提交这个容器



sudo docker commit -m="added json gem" -a="admln" 7cdb7bf497a7 admln/sinatra:v2
DSC0003.png
  注意:root@7cdb7bf497a7: 中7cdb7bf497a7是这个容器的短ID
  -m 标示是允许我们指定提交的信息,就像你提交一个版本控制,-a 标示允许对我们的更新指定一个用户
  admln为新的用户名字,保留了原有的镜像名称sinatra,最后为镜像指定了一个标签 v2
DSC0004.png


使用Dockerfile创建镜像
  创建一个Dockerfile其中包含一组指令告诉docker如何创建镜像
  创建一个目录,并且创建一个 Dockerfile



$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile


# This is a comment
FROM ubuntu:14.04
MAINTAINER admln
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
  每一个指令会让镜像创建一个新的层
  每个指令前缀都必须大写
  使用 # 注释
  第一个指令FROM告诉Docker使用哪个镜像源,在这个案例中使用了一个Ubuntu 14.04基础镜像
  使用MAINTAINER指令指定谁是维护者
  最后指定三个RUN指令,一个RUN指令在镜像内执行命令。例如安装包
  使用 docker build 命令和 Dockerfile 命令来创建一个镜像



sudo docker build -t="admln/sinatra:v3" ./sinatra/
DSC0005.png
  -t 来标示我们的新镜像,用户是admln、仓库源名称sinatra、标签是v3
  ./sinatra/ 来指定Dockerfile
  docker做的第一件事是通过你的上下文构建。基本上是目录的内容构建。docker会根据本地的内容来在docker进程中去构建
  下一步Dockerfile一步一步执行命令,每个步骤可以创建一个新的容器,在容器内运行指令并且提交改变,就像早期看到的docker commit流程,当所有的指令执行完成之后,就会得到324104cde6ad镜像(有助于标记admln/sinatra:v3),然后所有中间容器会被删除干净


设置镜像标签
  以给现有的镜像添加标记,然后提交和构,使用 docker tag 命令



sudo docker tag 3dc27133f65d admln/sinatra:devel
向Docker Hub推送镜像



sudo docker push admln/sinatra
主机中移除镜像



sudo docker rmi training/sinatra
  注: sudo docker rm *    为移除容器。

  

镜像导入
  要从本地文件系统导入一个镜像,可以使用 openvz(容器虚拟化的先锋技术)的模板来创建: openvz 的模板下载地址为 templates 。
  比如,先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:



sudo cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04

镜像存出
  要导出镜像到本地文件



sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

镜像载入
  可以使用 docker load 从导出的本地文件中再导入到本地镜像库



sudo docker load --input ubuntu_14.04.tar
  或者



sudo docker load < ubuntu_14.04.tar
  docker实现增量修改和维护的原理:
  每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58202-1-1.html 上篇帖子: docker 感性体验 下篇帖子: 如何进入docker容器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表