docker的dockerfile

FROM

Dockerfile中的第一个指令,也是一个必须的指令。它用于指定构建新镜像时所基于的基础镜像。

csharp 复制代码
FROM <image>:<tag>
FROM nginx:1.25.1-alpine

RUN

指令在Dockerfile中可以出现多次,并且每个RUN指令都会创建一个新的镜像层。为了减少镜像的层数,可以将多个命令合并为一行,例如使用&&连接多个命令,这样在构建镜像时只会生成一个新的层。在构建过程中安装软件包、配置环境、生成文件等

csharp 复制代码
RUN apt-get update && apt-get install -y python3

CMD

一个Dockerfile只会生效一个,cmd就是run后面跟着的指令的默认值,如果run后面写了指令就不会执行了。

csharp 复制代码
CMD ["executable", "param1", "param2"]

ENTRYPOINT

指令的命令会在容器启动时作为主要执行命令始终执行。

csharp 复制代码
ENTRYPOINT ["executable", "param1", "param2"]

如果在docker run命令中指定了其他命令,这些命令将作为ENTRYPOINT指令的参数进行传递。也就是说,ENTRYPOINT指令中的命令将成为执行时的前缀。run后面的参数将作为"param3"。

ENTRYPOINT 只能指定一个主要的执行命令,但是这个命令可以接受多个参数。

EXPOSE

EXPOSE用于声明容器在运行时监听的网络端口。它并不会实际上打开或映射端口,而是作为一个文档功能,用于告知用户该镜像内的服务或应用程序将使用指定的端口。

csharp 复制代码
EXPOSE 80

ENV

用于设置环境变量

csharp 复制代码
ENV MY_NAME John Doe

ADD

csharp 复制代码
ADD https://example.com/file.tar.gz /tmp/

COPY

csharp 复制代码
COPY app.py /app/

VOLUME

声明两个挂载点,和EXPOSE相似,都是声明,而没有实际作用。

csharp 复制代码
VOLUME ["/app/data", "/app/logs"]
$ docker run -v /host/data:/app/data -v /host/logs:/app/logs my_image

WORKDIR

在容器启动时,进程的当前工作目录将被设置为WORKDIR指令所指定的目录。

csharp 复制代码
WORKDIR /app
相关推荐
喜欢吃燃面11 分钟前
Linux 信号保存机制深度解析:从内核数据结构到进程状态管理
linux·运维·数据结构·学习
IMPYLH25 分钟前
Linux 的 stdbuf 命令
linux·运维·服务器·bash
Elastic 中国社区官方博客28 分钟前
Elasticsearch 多年来的演进 —— LogsDB 如何在不影响吞吐量的情况下将索引大小减少高达 75%
大数据·运维·elasticsearch·搜索引擎·全文检索·可用性测试
keyipatience32 分钟前
12.GDB调试技巧与计算机体系结构解析
linux·运维·服务器
小熊吃保安33 分钟前
Excel下载变成了ZIP?Docker 容器里的 Content-Type 离奇失踪案
docker·go
小夏子_riotous33 分钟前
Docker学习路径——9、Docker 网络深度解析:从默认网络到自定义网络实战
linux·运维·网络·docker·容器·centos·云计算
峥无37 分钟前
《read/write的秘密:文件描述符、重定向与用户态缓冲区》
linux·运维·服务器·进程
X7x51 小时前
网络守护者:STP端口角色与状态转换深度解析
运维·网络·网络协议·信息与通信·stp
墨者阳1 小时前
可观・可控・可治:DB运维平台架构设计与实践
运维·数据库·架构·自动化·数据可视化
奇妙之二进制1 小时前
fastdds源码分析之EDP协议
运维·服务器·网络