cmd指令用于一个容器启动时要运行的命令,这有点类似于RUN指令,只是RUN指令是指定镜像被构建时要运行的命令,而CMD是指定容器被启动时要运行的命令。这和使用docker run 命令启动容器时指定要运行的命令类似。
等价于
给CMD指令传递参数,将-l标志传递给了/bin/bash命令。
ENTRYPOINT指令与CMD指令非常类似,也很容易和CMD指令弄混。
该指令提供的命令不容易在启动容器的时候被覆盖,事实上,docker run 命令指定的任何参数都会被当做参数传递给ENTRYPOINT指令。
指定ENTRYPOINT指令
ENV 指令用来在镜像构建过程中设置环境变量。
添加ENV前缀后执行
也可以使用docker run 命令行的-e 来传递环境变量,但是这些变量只会在运行时有效。
USER指令用来指定该镜像会以一个什么样的用户去运行。
上述命令的意思时会以nginx的用户身份来运行,我们可以指定用户名或者UID以及组或GID,也可以是两者的组合。
如果不通过USER指令指定用户,默认用户为root
VOlUME指令用来向基于镜像创建的容器添加卷。一个卷是可以存在于一个或者多个容器内的特定的目录,这个目录可以绕过联合文件系统,并提供如下共享数据或者对数据进行持久话的功能。
- 卷可以在容器间共享和重用。
- 一个容器可以不是必须和其他容器共享卷。
- 对卷的修改是立时生效的。
- 卷会一直存在直到没有任何容器再使用它。
卷的功能让我们可以将数据如源代码、数据库或者其他内容添加到镜像中而不是将这部分内容提交到镜像中,并向允许我们在多个容器间共享这些内容。我们可以利用该功能来测试容器和容器内部的应用程序代码,管理日志,或者处理容器内部的数据库。
ADD指令用来构建环境下的文件(宿主机的构建环境中的文件)和目录复制到镜像中。
这里的指令会将构建目录下的file1文件复制到镜像中的file2中,指定源文件的位置参数可以是一个URL,或者构建上下文或者环境中文件名 或者目录。不能对构建目录或者上下文之外的文件进行ADD操作。
Docker通过目的地址参数末尾的字符判断文件源是目录还是文件,如果目标地址以/结尾,那么Docker就认为源地址指向的是目录。源地址同理。
ADD在处理本地归档文件时,会自动为归档文件解开(unpack)。
Dokcer解开归档文件的行为和使用带-x选项的tar命令一样。
ADD指令会使得构建缓存变得无效。
COPY指令类似于ADD,COPY只关心在构建上下文中复制本地的文件,而不会去做文件提取和解压的工作。
这个指令会将本地conf.d 目录中的文件复制到 /etc/apach2/ 目录中。
任何由docker指令创建的文件或者目录的UID和 GID都会设置未为0。
复制文件或者目录的时候会将元数据一同复制过去。
如果目的位置不存在,docker会自动创建目录结构,类似于mkdir -p
LABEL指令用于为Docker镜像添加元数据,元数据以键值对的形式展现。
STOPSIGNAL 指令用来设置停止容器时发生什么系统调用信号给容器。这个信号必须时内核系统调用表中和发的数,如9,或者SIGNAME格式中的信号名称,如SIGKILL。
ARG指令用来定义可以在docker build 命令运行时传递给构建运行时的变量,只需要在构建时使用–build-arg 标志即可。用户只能在构建时指定在Dockerfile文件中定义过的参数。
第二条指令设置了一个默认值,如果构建时没有为该参数指定值,就会使用这个默认值。
到此这篇启动dockerfile(启动docker命令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/17734.html