首页 行业 查看内容

Docker Dockerfile指令大全

2023-08-14 17:21:17

来源: 博客园


(资料图片仅供参考)

FROM-指定基础镜像

指定基础镜像,并且Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。

# 语法格式FROM FROM :# 如果不写则默认以latest为基准
RUN-运行指定的命令

构建镜像过程中需要执行的命令。可以有多条。语法格式,如下所示:

# shell格式:就像在命令行中输入的Shell脚本命令一样。RUN  # exec格式:就像是函数调用的格式。RUN ["executable", "param1", "param2"] 
CMD-容器启动时要运行的命令

语法格式,如下所示:

# 第一种就是shell这种执行方式和写法CMD command param1 param2# 第二种是可执行文件加上参数的形式(推荐)CMD ["executable","param1","param2"] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数CMD ["","",...]CMD [ "sh", "-c", "echo $HOME" ]CMD [ "echo", "$HOME" ] 
ENTRYPOINT-为容器指定默认运行程序

ENTRYPOINT或者CMD指令只能写一条,如果写了多条,那么,ENTRYPOINT或者CMD都只有最后一条生效。与CMD不同的是,由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指令指定的程序语法如下:

# exec格式(推荐)ENTRYPOINT ["executable", "param1", "param2"] # shell格式ENTRYPOINT command param1 param2
MAINTAINER-指定生成镜像的作者名称
MAINTAINER 
EXPOSE-为容器打开指定要监听的端口以实现与外部通信
# 这里的“-P”选项是关键,在启动容器的使用使用-P,# Docker会自动分配一个端口和转发指定的端口,# 使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。
ENV-设置环境变量
示例:ENV word helloRUN echo $word
ARG-设置环境变量

构建参数ARG和ENV指令一样,都是设置环境变量。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。即在将来容器运行时是不会存在这些环境变量的。但是不要因此就用ARG来保存密码之类的信息

ARG <参数名>[=<默认值>]
ADD-复制文件或者目录到容器里指定路径

将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件

ADD /data/src/nginx-1.14.0.tar.gz /data/src/# 构建镜像docker build -t nginx:v1.1  .# 创建容器docker run --rm --name nginx -it  nginx:v1.1  ls /data/src# 我们可以发现已经解压了nginx-1.14.0.tar.gz文件
COPY-复制文件或者目录到容器里指定路径

从上下文目录中复制文件或者目录到容器里指定路径。

样例:# 复制宿主机文件index.html到容器/data/html/index.htmlCOPY index.html /data/html/index.html# 复制宿主机data目录下文件(包括子目录)到容器/data/目录下,并不会复制目录本身COPY data  /data/
VOLUME-定义匿名数据卷

定义匿名数据卷,可实现挂载功能,可以将内地文件夹或者其他容器中得文件夹挂在到这个容器中。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

USER-指定执行后续命令的用户和用户组

默认情况下,容器的运行身份为root用户。

WORKDIR-指定工作目录

docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

关键词:

最新新闻
回顶部