当前位置:   article > 正文

Docker之dockerfile镜像创建_docker build 指定dockerfile

docker build 指定dockerfile


引言: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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

[root@docker ~]# docker commit -m "new" -a "centos" test1 centos:test1
##commit 常用选项:
    -m:说明信息
    -a:作者信息
    -p:生成过程中停止容器的运行
 
sha256:3e6e91b628effd49a7fa8fea42205
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/928937
推荐阅读
相关标签
  

闽ICP备14008679号