Docker学习之:构建自己的镜像

通过上几章的学习,我们已经掌握了镜像与容器的创建方法,这一节我们来学习如何构建自己的镜像,只要是以下两个命令

NO.1
-bash-4.2$ docker container commit
"docker container commit" requires at least 1 and at most 2 arguments.
See 'docker container commit --help'.
Usage:  docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] [flags]
Create a new image from a container's changes
NO.2
-bash-4.2$ docker image build
"docker image build" requires exactly 1 argument.
See 'docker image build --help'.
Usage:  docker image build [OPTIONS] PATH | URL | - [flags]
Build an image from a Dockerfile

NO.1的意思是我们基于一个image生成一个container,之后我们在container里面做了一些变化,比如说我们安装了一个软件,我们可以通过commit命令把安装的软件单独做成一个镜像,这个命令的简写是Docker Commit
NO.2的意思是通过一个Dockerfile创建一个镜像,可以简写为Docker Build.

OK,我们先来具体操作Commit命令

-bash-4.2$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
apple/hello-world   latest              69a935434293        5 hours ago         2.02MB
ubuntu              14.04               8cef1fa16c77        8 days ago          223MB
centos              latest              e934aafc2206        4 weeks ago         199MB

然后我们交互的运行centos

-bash-4.2$ docker run -it centos
[root@1d2512dc4222 /]# 

然后我们在这个容器安装一个vim

[root@1d2512dc4222 /]# yum install -y vim

然后我们退出再次查看,当前的容器

-bash-4.2$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
1d2512dc4222        centos              "/bin/bash"         2 minutes ago       Exited (0) 8 seconds ago                           jovial_payne

我们现在想的是把这个容器变成一个镜像,我们是把centos作为BaseImage的。

-bash-4.2$ docker commit jovial_payne apple/centos-vim
sha256:bd3879d45f3910f2261b8bae11725e97099340e69bd114290c59ddea070dcf51
-bash-4.2$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
apple/centos-vim    latest              bd3879d45f39        18 seconds ago      357MB
apple/hello-world   latest              69a935434293        5 hours ago         2.02MB
ubuntu              14.04               8cef1fa16c77        8 days ago          223MB
centos              latest              e934aafc2206        4 weeks ago         199MB

小伙伴们应该可以看到,这里多个centos-vim的image,我们发现它比之前的centos大一些,centos-vim其实就是在centos基础之上建立的,不行你看

-bash-4.2$ docker history e934aafc2206
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
e934aafc2206        4 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:f755805244a649ecc…   199MB               
-bash-4.2$ docker history bd3879d45f39
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
bd3879d45f39        3 minutes ago       /bin/bash                                       158MB               
e934aafc2206        4 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           4 weeks ago         /bin/sh -c #(nop) ADD file:f755805244a649ecc…   199MB   

看到了嘛,它俩共享了e934aafc2206,关系是何等的亲密呀,但是这种方式我们不是很提倡,我们很有可能会有一些不安全的东西,在Image发布出去。这种方式不是很提倡,接下来我们就来看NO.2,通过build的方式。

-bash-4.2$ docker image rm bd3879d45f39
Untagged: apple/centos-vim:latest
Deleted: sha256:bd3879d45f3910f2261b8bae11725e97099340e69bd114290c59ddea070dcf51
Deleted: sha256:0f74e6d7f2a19c8acf25661b97d5750adbff4e43c4046d8fdbfb127cf470c1d5

我们首先删掉之前的vim Image,然后继续执行

-bash-4.2$ pwd
/home/vagrant/docker-centos-vim
-bash-4.2$ vim dockerfile
-bash-4.2$ ls
dockerfile

dockerfile的内容是:
FROM centos
RUN yum install -y vim
我们之前使用的scratch,现在我们要在centos之上安装image 了,所以要使用FROM centos,这里给大家抛出一个问题,既然我们的image只是可读的,那么我们如何通过yum安装vim呢?大家可以先思考一下,我会在后面告诉大家怎么做。
我们首先使用,docker build 配合dockerfile创建一个镜像

docker build -t apple/centos-vim-new .

.的意思是根据当前目录的dockerfile创建
Step 2/2 : RUN yum install -y vim
---> Running in dbcc5e78b3be
Removing intermediate container dbcc5e78b3be
大家在安装的过程中应该看到了这两行,它其实在安装的时候,先把它转成一个container,安装成功以后在删掉,在把这个container删掉,image就被保留下来了。
最后我们来看一下,创建的成果

-bash-4.2$ docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
apple/centos-vim-new   latest              8f1ba4b3b3bd        5 minutes ago       357MB
apple/hello-world      latest              69a935434293        5 hours ago         2.02MB
ubuntu                 14.04               8cef1fa16c77        8 days ago          223MB
centos                 latest              e934aafc2206        4 weeks ago         199MB

小伙伴们,赶紧通过Dockerfile创建你自己的镜像吧!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,454评论 0 120
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,487评论 15 147
  • 目录 前言 Dockerfile的书写规则及指令使用方法 创建Dockerfile,构建运行环境 构建镜像 Doc...
    garyond阅读 72,220评论 0 43
  • 从过年期间到年后收假,我负责的系统频发生产问题。晚上躺在床上,想着明天要处理修复一堆问题,心理异常烦躁,心生抵触,...
    余小琴007_3684阅读 214评论 0 0
  • 摄影|文 陵子 冬,你好 冰凌花的盛开 见证冬的来到 爱恋般美妙 浪漫满屋的温馨 拥你进怀 见证 大自然的奥妙
    陵子心语阅读 180评论 0 7