Dockerfile构建镜像的过程
 
1、从base镜像运行一个容器
2、执行一条指令,对容器进行修改
3、执行类似 docker commit的操作,生成一个新的镜像层
4、Docker在基于刚刚提交的镜像层运行一个新的容器
5、重复步骤 2-4 ,直到Dockerfile中所有指令执行完毕
 
 
root@docker-lab:~/docker# ls
Dockerfile
root@docker-lab:~/docker# cat Dockerfile
FROM centos
RUN uptime
RUN touch tmpfile
RUN ls /mnt2
root@docker-lab:~/docker# docker build -t centos-t1 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
latest: Pulling from library/centos
a02a4930cb5d: Already exists
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
---> 1e1148e4cc2c
Step 2/4 : RUN uptime
---> Running in f05e49595929
06:44:46 up 204 days, 22:07,  0 users,  load average: 0.02, 0.02, 0.00
Removing intermediate container f05e49595929
---> be8d26615578
Step 3/4 : RUN touch tmpfile
---> Running in ada319df9d43
Removing intermediate container ada319df9d43
---> acaccd0c45d3
Step 4/4 : RUN ls /mnt2    #    第一次build报错, ls /mnt2 执行失败
---> Running in 590fc8e2360c
ls: cannot access /mnt2: No such file or directory
The command '/bin/sh -c ls /mnt2' returned a non-zero code: 2
root@docker-lab:~/docker# docker build -t centos-t1 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
---> 1e1148e4cc2c    #    第二次build直接使用了之前成功build镜像层的缓存
Step 2/4 : RUN uptime
---> Using cache
---> be8d26615578    #    第二次build直接使用了之前成功build镜像层的缓存
Step 3/4 : RUN touch tmpfile
---> Using cache
---> acaccd0c45d3    #    第二次build直接使用了之前成功build镜像层的缓存
Step 4/4 : RUN ls /mnt2    #    第二次build报错, ls /mnt2 执行失败
---> Running in b17908bf7059
ls: cannot access /mnt2: No such file or directory
The command '/bin/sh -c ls /mnt2' returned a non-zero code: 2
root@docker-lab:~/docker# docker images -a    #    此处可以看到build前三个成功步骤生成的镜像层
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              be8d26615578        34 seconds ago      202MB
<none>              <none>              acaccd0c45d3        34 seconds ago      202MB
centos              latest              1e1148e4cc2c        4 weeks ago         202MB
root@docker-lab:~/docker# docker run -it acaccd0c45d3    #    进入最后一次成功的镜像层,查看失败原因,没有 /mnt2 目录
[root@9ae841c96c62 /]# ls /mnt2
ls: cannot access /mnt2: No such file or directory
[root@9ae841c96c62 /]# ls /
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp      usr
bin                etc  lib   media  opt  root  sbin  sys  tmpfile  var
[root@9ae841c96c62 /]#
 
 

015、调试Dockerfile(2019-01-04 周五)的更多相关文章

  1. 第 3 章 镜像 - 015 - 调试 Dockerfile

    如何 debug Dockerfile 通过 Dockerfile 构建镜像的过程 从 base 镜像运行一个容器 执行命令对容器做修改 执行类似 docker commit 的操作,生成一个新的镜像 ...

  2. 2019.01.04 洛谷P4719 【模板】动态dp(链分治+ddp)

    传送门 ddpddpddp模板题. 题意简述:给你一棵树,支持修改一个点,维护整棵树的最大带权独立集. 思路: 我们考虑如果没有修改怎么做. 貌似就是一个sbsbsb树形dpdpdp,fi,0f_{i ...

  3. 2019.01.04 bzoj2962: 序列操作(线段树+组合数学)

    传送门 线段树基础题. 题意:要求维护区间区间中选择ccc个数相乘的所有方案的和(c≤20c\le20c≤20),支持区间加,区间取负. 由于c≤20c\le20c≤20,因此可以对于每个线段树节点可 ...

  4. 2019.01.04 洛谷 P4721 【模板】分治 FFT

    传送门 如同题目所描述的一样,这是一道板题. 题意简述:给你一个数组g1,2,...ng_{1,2,...n}g1,2,...n​并定义f0=1,fi=∑j=1ifi−jgjf_0=1,f_i=\su ...

  5. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  6. 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)

    包括 Dockerfile 在内的任何脚本和程序都会出错.有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile. 先回顾一下通过 Dockerfile 构建镜像的过程: ...

  7. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  8. AWS re:Invent(2019.01.09)

    时间:2019.01.09地点:北京国际饭店

  9. 2019/01/17 基于windows使用fabric将gitlab的文件远程同步到服务器(git)

    觉得django项目把本地更新push到gitlab,再执行fabric脚本从gitlab更新服务器项目挺方便的,当然从本地直接到服务器就比较灵活. 2019/01/17 基于windows使用fab ...

随机推荐

  1. MT【294】函数定义的理解

    已知函数$f(x)$的定义域为$D,\pi\in D$.若$f(x)$的图像绕坐标原点逆时针旋转$\dfrac{\pi}{3}$后与原图像重合,则$f(\pi)$不可能是(    )A$\dfrac{ ...

  2. 【Vijos】lxhgww的奇思妙想(长链剖分)

    题面 给定一棵树,每次询问一个点的\(k\)次祖先,强制在线. Vijos 题解 长链剖分. 链接暂时咕咕咕了. 现在可以戳链接看题解了 #include<iostream> #inclu ...

  3. 【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)

    [BZOJ5339][TJOI2018]教科书般的亵渎(斯特林数) 题面 BZOJ 洛谷 题解 显然交亵渎的次数是\(m+1\). 那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1} ...

  4. BZOJ3456 城市规划 【多项式求ln】

    题目链接 BZOJ3456 题解 真是一道经典好题,至此已经写了分治\(NTT\),多项式求逆,多项式求\(ln\)三种写法 我们发现我们要求的是大小为\(n\)无向联通图的数量 而\(n\)个点的无 ...

  5. NOIp2018 复习笔记

    其实也没什么用啦,只是来占个坑 OI知识 3367 [模板]并查集 就这么做啊 没什么其他的 就是可以做tarjan LCA和Kruskal的操作 //关键函数 int getfa(int t) { ...

  6. Mysql 允许远程连接

    授权的方式允许任何主机访问mysql服务器: mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' W ...

  7. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  8. centos7/rhel7下配置PXE+Kickstart自动安装linux系统

    应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...

  9. Hyper-V:无法打开虚拟机XXX,因为虚拟机监控程序未运行

    异常处理汇总-服务器系列:http://www.cnblogs.com/dunitian/p/4522983.html 异常处理汇总-开发工具  http://www.cnblogs.com/duni ...

  10. Python反转过程学习

    Pyhon的反转过程的学习: #coding:utf-8 #反转过程.py """ def add(x,y): return x+y params=(1,2) add(* ...