计算机系统应用教程网站

网站首页 > 技术文章 正文

【容器篇】认识Dockerfile dockerfile示例

btikc 2024-09-27 01:14:50 技术文章 7 ℃ 0 评论

文件结构

打包镜像,所有的动作都是从Dockerfile开始, Docker Engine 通过读取Dockerfile 的文件结构来打包镜像。

Dockerfile大概内容如下

# syntax=docker/dockerfile:1
FROM ubuntu:22.04

# install app dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install flask==2.1.*

# install app
COPY hello.py /

# final configuration
ENV FLASK_APP=hello
EXPOSE 8000
CMD flask run --host 0.0.0.0 --port 8000

指令

说明

FROM

定义基础镜像

RUN

在当前镜像里的一个新层上执行任何命令,并且commit

WORKDIR <directory>

指定任何命令的工作目录,在这个指令后面的所有指令的上下文都是这个目录

COPY <src> <dest>

从src复制新的文件或是目录到容器的文件系统的dest目录

CMD <command>

定义这个镜像启动时的默认程序

‘# comment

以井号开头的是注释

ENV

设置linux环境变量

ADD <src> <dest>

将源目录的内容添加到容器的dest目录

注: COPY 与 ADD的区别在于,ADD可以支持通过URL 从远程服务器获取资源并复制到镜像中

docker build 默认查找的是名称为 Dockerfile 文件,不需要扩展名。也可以通过 docker build --file 或是 -f 来指定Dockerfile 的文件,如

[root@master nonuser]# docker build -t testdocker:latest -f ./dockerfile.txt .

上面的例子中,-t testdocker:latest 选项指定了name和tag, 最后的 . 指定了构建上下文 -f 指定了Dockerfile 文件(未指定时,默认查找 Dockerfile 文件),这里比较不好理解的是构建上下文。

构建上下文

docker build 命令从一个Dockerfile文件和一个构建上下文来构建Docker 镜像,通过docker build 中指定的path 来获取。

docker build [options] PATH | URL

目录上下文

构建的程序可以引用在构建上下文中的任何文件,如 COPY 指令引用构建上下文中的一个文件,而且文件指定的目录是递归的,就是可以包括指定的整个目录以及它的子目录。

传统的构建方式是会把整个目录发送至 docker daemon,即使目录下有些内容未被使用,所以这点很重要,如果在目录中包含一个很大的文件,但又未被使用,会导致build的过程很慢,而这个慢就是将这个大文件发送至docker daemon。 可以通过增加.dockerignore 文件进行忽略一些文件,这些文件不会被发送至 docker daemon.

  1. 大目录下作为build context,发送的内容就很大
  1. 小目录作为build context,则发送的也小

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表