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创建你自己的镜像吧!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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

友情链接更多精彩内容