温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

docker学习-构建镜像

发布时间:2020-08-03 10:19:28 来源:网络 阅读:409 作者:羊草 栏目:云计算

对于docker用户来说,最好的情况是不需要自己创建镜像,几乎所有的常用的数据库、中间件、应用软件等都有现成的docker官方镜像或其他人和组织创建的镜像,我们只需要稍微配置就可以直接使用。
但是在某些情况下,也需要自己构建镜像。
比如:
1、找不到现成的镜像,比如自己开发应用程序
2、需要在镜像中加入特定的功能。
docker提供了两种构建镜像的方法:docker commit命令和Dockerfile构建文件。

docker commit

docker commit命令式创建镜像最直观的方法,其过程包含3个步骤
1、运行容器
2、修改容器
3、将容器保存为新的镜像
比如: 在Ubuntu base镜像中安装vi并保存为新镜像
(1)运行容器
docker学习-构建镜像
-it 参数的作用式以交互的模式进入容器,并打开终端。
2b1763cc8299就是容器内部的ID
(2)安装vim
确认vim没有安装
docker学习-构建镜像
安装vim,如下所示:
docker学习-构建镜像
(3)保存为新镜像
在新窗口中查看当前运行的容器
docker学习-构建镜像
distracter_chaum是Docker为我们的容器随机分配的名字
执行docker commit命令将容器保存为镜像
docker学习-构建镜像
新镜像命名为ubuntu-with-vim
查看新镜像的属性,如下所示:
docker学习-构建镜像
可以看到新镜像因为安装了vim软件而变大了
从新镜像启动容器,验证vim已经可以使用
docker学习-构建镜像

虽然我们可以使用docker commit创建新镜像,但是docker不建议用户使用这种方式构建镜像。原因如下:
1、该方式是手工创建镜像的方式了,容易出错,效率低可重复性弱
2、无法对镜像进行审计,存在安全隐患

Dockerfile

Dockerfile是一个文本文件,记录了镜像构建的所有步骤

第一个Dockerfile

新建一个文本文件Dockerfile,内容如下:
docker学习-构建镜像
以下为运行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)

说明:
1、运行docker build命令,-t将新镜像命名为ubuntu-with-vim-dockerfile 命令末尾的.指明build context为当前目录。Docker默认会从build context中查找Dockerfile文件,
也可以通过-f参数指定Dockerfile文件的位置
2、镜像构造过程。首先Docker将build context中的文件发送给Docker daemon,bulid context为镜像构建提供所需要的文件或目标。Dockerfile中的ADD,COPY命令可以将build context中的文件添加到镜像,此例中,bulid context为当前目录.root,该目录下的所有文件和子目录都会被发送给Docker daemon。注意不要将多余文件放到bulid context,特别不要把/,/usr作为bulid context,否则构建过程中会相当的缓慢甚至失败
3、Step1,执行FROM,将Ubuntu作为base镜像,镜像ID为a2a15febcdf3
4、Step2,执行RUN,安装vim
5、启动临时容器,在容器中通过apt-get安装vim
6、安装完成后,将容器保存为镜像,其ID为ad7fa94cfb94
该步骤底层使用类似docker commit的命令
7、镜像构建成功

通过docker images查看镜像信息

docker学习-构建镜像

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI