Dockerfile的构建过程

news/2024/11/12 17:38:10

一、Dokcerfile的构建过程

步骤1、从基础镜像运行一个容器
步骤2、执行一条指令,对容器做出修改
步骤3、执行类似docker commit的操作,提交一个新的镜像层
步骤4、再基于刚提交的镜像运行一个新容器
步骤5、执行Dockerfile中的下一条指令,直至所有指令执行完毕

二、构建镜像的中间层调试

可以运行Dockerfile中间层镜像来创建一个容器进行调试,主要用于排查Dockerfile是否出错。

三、Dockerfile镜像缓存

Dockerfile构建命令如下:
语法:docker build [OPTIONS] PATH | URL | -
参数说明:
OPTIONS说明:
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式
示例:
1.使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 . 
2.使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
docker build github.com/creack/docker-firefox
3.也可以通过 -f Dockerfile 文件的位置:
$ docker build -f /path/to/a/Dockerfile .

使用docker build命令构建Dockerfile有中间镜像缓存。
在构建Dockerfile不使用缓存有下面两种方式:
1.在使用docker build构建Dockerfile是添加–no-cache选项;
2.修改Dockerfile中ENV REFRESH_DATE来刷新缓存

四、查看镜像的构建过程

查看镜像构建过程命令如下:

语法:docker history [OPTIONS] IMAGE
参数说明:
OPTIONS说明:
-H :以可读的格式打印镜像大小和日期,默认为true;
--no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。
示例:
查看本地镜像runoob/ubuntu:v3的创建历史。
root@runoob:~# docker history runoob/ubuntu:v3


http://www.niftyadmin.cn/n/640691.html

相关文章

《Web全栈工程师的自我修养》——余果. 书摘

Web全栈工程师的自我修养——余果 ◆ 围绕商业目标 要先看看有哪些问题需要解决,然后再补充您的工具箱。 ◆ 获得面试机会 在著名开源项目中贡献代码,说明您有能力阅读和编写好的代码 ◆ 那个什么都懂的家伙 技术是您的武器,成长就是好好打磨…

两道选择题,看完之后全班真的只剩下沉默

记得大学一堂选修课上。教授面带微笑,走进教室,对我们说:“我受一家机构委托,来做一项问卷调查,请同学们帮个忙。”一听这话,教室里轻微的一阵议论开了,大学课堂本来枯燥,这下好玩多…

多阶段构建

一、多阶段构建原理 多阶段构建,是在Dockerfile中使用多个FROM指令,每个FROM指令可以使用不同的基础镜像,并且每个指令都开始一个新的构建,可以选择性地将一个阶段构建中生成的文件复制到另一个阶段,从而在最终image中…

js复制文本到剪切板中 支持换行

/*** 复制文本到剪切板中** export* param {*} value 需要复制的文本* param {*} cb 复制成功后的回调*/ export function copy(value, cb) {// 动态创建 textarea 标签const textarea document.createElement(textarea)// 将该 textarea 设为 readonly 防止 iOS 下自动唤起键…

颜色模型和颜色应用---HLS颜色模型

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/liyangke/blog/2877018

一键部署Docker CE(CentOS 7)

一键部署脚本 #!/bin/sh # author ling# 定义显示颜色 RED\e[1;91m GREEN\e[1;92m WITE\e[1;97m NC\e[0m# centos7环境中安装docker function install_docker_in_contos7() {echo "Install docker in centos7!"echo "Remove old docker!"yum remove docke…

react —— 复制定制化带有标题的二维码

1. 生成二维码直接借助qrcode这个npm库即可生成二维码,但接到的需求要求是在鼠标点击的附近展示出二维码,点击弹窗里面的复制按钮即可赋值带标题的二维码图片到剪切板,实现效果如下图: 主要实现要点: 1.利用qrcode 生成…

Kubelet bootstrap认证配置步骤

kubelet 授权 kube-apiserver 的一些操作 exec run logs 等 RBAC 只需创建一次就可以 kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrolesystem:kubelet-api-admin --user kubernetes 创建 bootstrap kubeconfig 文件 注意: token 生效时间为 1day…