网站首页 > 技术文章 正文
文件结构
打包镜像,所有的动作都是从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.
- 大目录下作为build context,发送的内容就很大
- 小目录作为build context,则发送的也小
猜你喜欢
- 2024-09-27 Dockerfile常用指令大全及详解 dockerfile中最常见的指令是什么
- 2024-09-27 阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比
- 2024-09-27 Docker 镜像构建之 Dockerfile docker镜像在哪个文件夹
- 2024-09-27 docker进击之Dockerfile最佳实践 dockersfile
- 2024-09-27 Dockerfile简单使用 dockerfile示例
- 2024-09-27 Dockerfile你值得拥有 dockerfile sh
- 2024-09-27 DockerFile文件详解 dockerfile文件详解java
- 2024-09-27 Docker实战九之Docker Dockerfile
- 2024-09-27 Docker篇(三):Dockerfile实战开启
- 2024-09-27 DockerFile 命令总结 dockerfile sh
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)