Docker之dockerfile镜像创建

本文详细介绍了Dockerfile的概念、Docker镜像的创建方法,重点讲解了基于Dockerfile创建镜像的过程。Dockerfile包含ENTRYPOINT、CMD等指令,用于构建定制化的镜像,并探讨了镜像的分层原理,强调了COPY与ADD指令的区别。
摘要由CSDN通过智能技术生成


引言:Dockerfile 是用来构建 Docker 镜像的构建文件, 是由一系列的命令和参数构成的脚本
通过指令的方式构建镜像

一. Dockerfile概念

  1. dockerfile是自定义镜像的一套规则
  2. dockerfie由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层
    dockerfile的原理就是镜像分层。
  3. Dockerfile中的每个指令都会创建一个新的镜像层(是一个临时的容器,执行完后将不再存在,再往后进行重新的创建与操作)。
  4. 镜像层将被缓存和复用(后续的镜像层将基于前面的一层,每一层都会有下面几层的缓存)
  5. 当dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了(后续操作必然更改前面的镜像层),那么对应的镜像层缓存就会失效(自动销毁)。
  6. 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效(第一层不成功,那么第二层也不成功,相当于地基)。
  7. 容器的修改并不会影响镜像,如果在某一层中添加一个文件,在下一层中删除它,镜像中依然会包含该文件。
    在这里插入图片描述

在这里插入图片描述

二. Docker镜像创建

创建镜像有三种方法:

  1. 基于已有镜像创建
  2. 基于本地模板创建
  3. 基于Dockerfile创建(重点)

2.1 基于现有镜像创建

首先启动一个镜像,在容器里做修改

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    87a94228f133   28 hours ago   133MB
centos       7         eeb6ee3f44bd   3 weeks ago    204MB
[root@docker ~]# docker create -it --name test1 centos:7 bash
ae03a782eb8fed80190bfee1c5e459c1e82e1406a55627553e93edc943645217
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND   CREATED         STATUS    PORTS     NAMES
ae03a782eb8f   centos:7   "bash"    2 seconds ago   Created             test1

将修改后的容器提交为新的镜像,需要使用该容器的 ID 号创建新镜像

[root@docker ~]# docker commit -m "new" -a "centos" test1 centos:test1
##commit 常用选项:
    -m:说明信息
    -a:作者信息
    -p:生成过程中停止容器的运行
 
sha256:3e6e91b628effd49a7fa8fea42205
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值