dockerfile
构建镜像的所有文件都需要在Dockerfile文件所在目录下。
Dockerfile实例:
FROM scratch
#FROM alpine:3.19
LABEL author=fei version=1.0
ADD alpine-minirootfs-3.19.1-x86_64.tar.gz /
COPY Shanghai /usr/share/zoneinfo/Asia/Shanghai
COPY repositories /etc/apk/repositories
ENV version=1.0 HOME=/root
RUN apk update && apk add bash curl && mkdir /data && \
addgroup -S -g 88 algroup && adduser -G algroup -u 88 -S -s /sbin/nologin aluser
VOLUME ["/opt","/data"]
WORKDIR /data
USER aluser
CMD ["/bin/sh"]
#ENTRYPOINT ["/nginx.sh"]
执行构建镜像命令:docker build . -t alpine:latest --no-cache
命令 | 说明 |
FROM | 指定基础镜像,此指令通常必需放在Dockerfile文件第一个非注释行,可以指定空镜像:scratch。 |
LABEL | 指定镜像元数据,一个镜像可以有多个label ,还可以写在一行中,即多标签写法。 |
ADD | 可以是Dockerfile所在目录的一个相对路径;也可是一个 URL;还可是一个 tar 文件(自动解压) 。 |
COPY | 复制本地宿主机的到容器中的,如果是目录,则其内部文件或子目录会被递归复制,但目录自身不会被复制。 |
RUN |
指令用来在构建镜像阶段需要执行 FROM 指定镜像所支持的Shell命令。
|
ENV | 设置环境变量,会被后续指令(如:ENV,ADD,COPY,RUN等)通过$KEY或${KEY}进行引用。 |
ARG |
在build 阶段指定变量,ARG仅在构建镜像时生效,容器运行时并不存在ARG定义的环境变量。
|
WORKDIR | 为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录,容器运行后进入容器内WORKDIR指定的默认目录。 |
USER | 指定容器运行用户 ,用户必须是事先建立好的。,如果没有指定 USER,默认是 root 身份执行。 |
VOLUME | 将挂载容器目录,容器被删除时,挂载目录的数据将被保存,数据保存在:/var/lib/docker/volumes/容器ID |
CMD |
容器启动命令 ,CMD 用来指定启动容器时默认执行的一个命令,且其运行结束后,容器也会停止。
|
ENTRYPOINT
|
入口点,配置容器启动后执行的命令及参数。若和CMD并存,CMD的值将会成为ENTRYPOINT的参数。
|
ONBUILD
|
可以用来配置当构建当前镜像的子镜像时,会自动触发执行的指令,但在当前镜像构建时,并不会执行,即
延迟到子镜像构建时才执行。也即当拿此Dockerfile构建的镜像作为基础镜像时,对子镜像进行操作。
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端