Dockerfile简介

Dockerfile简介Docker可以通过Dockerfile中的指令,自动的构建镜像.Dockerfile又是什么?一个Dockerfile就是一个文本文档,在这文档内,包含了用户可以在命令行上调用的,用来编排容器的所有指令.可以使用:docker build 命令它会连续的执行Dockerfile中的一些指令,来自动的为我们构建镜像.1. build语法docker bu...
摘要由CSDN通过智能技术生成

Dockerfile简介

Docker可以通过Dockerfile中的指令,自动的构建镜像.

Dockerfile又是什么?

一个Dockerfile就是一个文本文档,在这文档内,包含了用户可以在命令行上调用的,用来编排容器的所有指令.
可以使用:
docker build 命令
它会连续的执行Dockerfile中的一些指令,来自动的为我们构建镜像.

1. build语法

docker build命令,可以通过Dockerfile及其上下文环境context来构建一个镜像.

所谓的context,所指的是,用来构建镜像的一系列文件所放置的PATH或者是URL.

PATH:指的是本地文件系统中的目录.

URL:指的是Git仓库的地址.

context中的结构会被递归访问,也就是说 
PATH及其所包含的所有子目录.
# and
URL所指向的仓库及其子模块.

假设当前目录为context的话,那么编译命令为:

sudo docker build .

build命令是动过Docker 后台进程(daemon)来执行的,并非shell的命令行.
build首先要做的就是讲整个context内容发送到daemon.
在大多情况下,最好创建一个空的目录来进行操作,将你的Dockerfile放到该目录,再将需要的内容添加进来.

不要用根目录,/作为PATH,因为这会导致,build会将整个硬盘的内容都加载到Docker daemon

如果想要在build的context中使用某个文件,需要使用诸如COPY等指令将文件添加上下文.
为了提高build时的性能,很多不需要被打包进镜像的目录或文件可以写入.dockerignore文件中,.dockerignore文件本身也不会被打包进镜像.

Dockerfile一般都命名为Dockerfile,并且被放在context的根,但是也可以通过使用-f选项,来指定放在任意目录的Dockerfile

sudo docker build -f /path/to/a/Dockerfile .

你也可以指定一个仓库和标签,来存放build成功后生成的镜像.(也可以使用多个-t选项,来指定多个仓库存放生成的镜像)

docker build -t REPOSITORY/TAG.

Docker daemon在执行Dockerfile中的指令之前,会先对语法进行初步校验,如果有语法错误它会将错误信息反馈给我们.

Docker daemon会逐行执行Dockerfile中的指令,在最终生成新的镜像ID之前,如果有必要它会将每一条指令的执行结果都提交成一层新的镜像.最后Docker daemon会自动清理添加到context中的内容.

值得注意的是,每条指令都是独立运行并且会产生一层新的镜像,因此,RUN cd /tmp对它下一条指令不会有任何影响,即不会切换到/tmp目录中.

1.1BuildKit

自18.09版本开始,Docker支持moby/buildkit项目所提供的一种新的后台来执行镜像的构建——BuildKit
与老版本相比它有很多优势:

1. Detect and skip executing unused build stages
检测并且跳过无用的步骤

2. Parallelize building independent build stages
可以并行执行彼此独立的步骤

3. Incrementally transf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值