对于docker用户来讲,最好的状况是不须要本身建立镜像,几乎全部的经常使用的数据库、中间件、应用软件等都有现成的docker官方镜像或其余人和组织建立的镜像,咱们只须要稍微配置就能够直接使用。
可是在某些状况下,也须要本身构建镜像。
好比:
一、找不到现成的镜像,好比本身开发应用程序
二、须要在镜像中加入特定的功能。
docker提供了两种构建镜像的方法:docker commit命令和Dockerfile构建文件。docker
docker commit命令式建立镜像最直观的方法,其过程包含3个步骤
一、运行容器
二、修改容器
三、将容器保存为新的镜像
好比: 在Ubuntu base镜像中安装vi并保存为新镜像
(1)运行容器
-it 参数的做用式以交互的模式进入容器,并打开终端。
2b1763cc8299就是容器内部的ID
(2)安装vim
确认vim没有安装
安装vim,以下所示:
(3)保存为新镜像
在新窗口中查看当前运行的容器
distracter_chaum是Docker为咱们的容器随机分配的名字
执行docker commit命令将容器保存为镜像
新镜像命名为ubuntu-with-vim
查看新镜像的属性,以下所示:
能够看到新镜像由于安装了vim软件而变大了
重新镜像启动容器,验证vim已经可使用数据库
虽然咱们可使用docker commit建立新镜像,可是docker不建议用户使用这种方式构建镜像。缘由以下:
一、该方式是手工建立镜像的方式了,容易出错,效率低可重复性弱
二、没法对镜像进行审计,存在安全隐患ubuntu
Dockerfile是一个文本文件,记录了镜像构建的全部步骤vim
新建一个文本文件Dockerfile,内容以下:
如下为运行docker build命令构建镜像并详细分析细节安全
[root@docker-1 ~]# docker build -t ubuntu-with-vim-dockerfile . (1) Sending build context to Docker daemon 13.31kB (2) Step 1/2 : FROM ubuntu (3) ---> a2a15febcdf3 Step 2/2 : RUN apt-get update && apt-get install -y vim (4) ---> Running in ad7fa94cfb94 (5) Successfully built ad7fa94cfb94 (6) Successfully tagged ubuntu-with-vim-dockerfile:latest (7)
说明:
一、运行docker build命令,-t将新镜像命名为ubuntu-with-vim-dockerfile 命令末尾的.指明build context为当前目录。Docker默认会从build context中查找Dockerfile文件,
也能够经过-f参数指定Dockerfile文件的位置
二、镜像构造过程。首先Docker将build context中的文件发送给Docker daemon,bulid context为镜像构建提供所须要的文件或目标。Dockerfile中的ADD,COPY命令能够将build context中的文件添加到镜像,此例中,bulid context为当前目录.root,该目录下的全部文件和子目录都会被发送给Docker daemon。注意不要将多余文件放到bulid context,特别不要把/,/usr做为bulid context,不然构建过程当中会至关的缓慢甚至失败
三、Step1,执行FROM,将Ubuntu做为base镜像,镜像ID为a2a15febcdf3
四、Step2,执行RUN,安装vim
五、启动临时容器,在容器中经过apt-get安装vim
六、安装完成后,将容器保存为镜像,其ID为ad7fa94cfb94
该步骤底层使用相似docker commit的命令
七、镜像构建成功ide
经过docker images查看镜像信息学习