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

[经验分享] 创建属于自己的docker镜像

[复制链接]

尚未签到

发表于 2018-5-28 12:44:52 | 显示全部楼层 |阅读模式
  docker镜像是容器的基础,当每次执行docker run时就是在对docker说现在我需要哪个镜像。如果在你的docker主机上没有这个镜像,docker会自动从一个registry上下载这个镜像(默认为docker hub)

在这一节,我们将会探讨更多的关于docker镜像的内容:


  • 管理和使用本地镜像

  • 创建基础镜像

使用docker images命令列出本地的docker镜像

[root@docker-1 ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
docker-whale          latest              05bfcfec1909        7 days ago          252.7 MB
docker/docker-whale   latest              05bfcfec1909        7 days ago          252.7 MB
nginx                 latest              e43d811ce2f4        2 weeks ago         181.4 MB
ubuntu                latest              f753707788c5        3 weeks ago         127.1 MB
你可以看到所有之前用过的镜像,同时通过列出所有镜像,我们可以知道三个很重要的信息


  • 每个镜像来自于那个仓库(repository)

  • 每个惊喜的标签是什么(tag)

  • 每个镜像的IMAGE ID

一个镜像仓库中对于一个镜像可能有多个不同的变体,比如说对于ubuntu来说,我们可能会找到Ubuntu 10.04, 12.04, 12.10, 13.04, 13.10 and 14.04这么多不同的变体,所以我们会通过一个标签(tag)来区分不同的变体,如下所示

ubuntu:14.04  所以,当你要创建一个容器时,你可以参考下面来标记镜像

$ docker run -t -i ubuntu:14.04 /bin/bash
如果你想创建一个Ubuntu 12.04的容器,请参考下面:

$ docker run -t -i ubuntu:12.04 /bin/bash
如果你没有指定标签,我们还用ubuntu举例,docker会默认使用ubuntu:latest镜像

  Tip:我们应该尽量指定镜像标签,例如ubuntu:14.04,那样我们就能精确地知道我们使用的是哪个镜像,对我们后期的排查和调试会有很大帮助
  现在获取一个新的镜像
$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
f1b10cd84249: Pull complete
c852f6d61e65: Pull complete
7322fbe74aa5: Pull complete
Digest: sha256:90305c9112250c7e3746425477f1c4ef112b03b4abe78c612e092037bfecc3b7
Status: Downloaded newer image for centos:latest  查找一个镜像
$ docker search sinatra
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
training/sinatra                       Sinatra training image                          0                    [OK]
marceldegraaf/sinatra                  Sinatra test app                                0
mattwarren/docker-sinatra-demo                                                                  0. . .  如果这其中有你需要的镜像,你就可以把它pull到本地了

$ docker pull training/sinatra  创建一个我们自己的镜像

  我们从docker hub上下载的镜像可能不能完全满足我们的实际需要,这时候我们就需要对他做一些更新或修改了,我们主要更新或修改一个镜像的方式主要有以下两种:


  •   先用镜像创建出一个容器,然后对容器做修改,最后将容器提交(commit)为一个新的镜像
首先创建一个容器
$ docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#
在容器内安装一些需要的软件包
root@0b2616b0e5a8:/# apt-get install -y ruby2.0-dev ruby2.0
将这个容器提交为新的镜像
$ docker commit -m "Added json gem" -a "Kate Smith" \
0b2616b0e5a8 ouruser/sinatra:v2
之后通过这个镜像创建的容器就会有上面安装的软件包了


  •   可以用Dockerfile去创建一个指定的镜像
首先创建一个目录和一个Dockerfile
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
向Dockerfile中写入指令
# This is a comment
FROM ubuntu:14.04
MAINTAINER Kate Smith <ksmith@example.com>
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
然后就可以通过build命令创建自己定制的镜像
$ docker build -t ouruser/sinatra:v2 .
  Note:一个镜像最多不能超过127层,这是为了使镜像的整体大小处在一个最佳状态的全局设置


运维网声明 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-482231-1-1.html 上篇帖子: 解决CentOS7下运行docker容器时出现的报错Error resolving syscall name... 下篇帖子: Docker 学习笔记【1】Docker 相关概念,基本操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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