知识网经验知识百科全书!
登录

cmd命令数字雨教程「cmd一键清除垃圾命令」

122次浏览 | 2022-09-09 10:51:35 更新
来源 :一只小猪
最佳经验
本文由作者推荐

镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,这个脚本就是Dockerfile。Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。


FROM指令

该指令指定基础镜像,然后对镜像进行定制。

FROM ubuntu:16.04

Docker还存在一个特殊的镜像,名为scratch,它表示一个空白镜像,如果你以scratch为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像的第一层。对于Linux下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接FROM scratch会让镜像体积更加小巧。

示例:

FROM scratch

....


RUN指令

RUN指令是用来执行命令行命令的。其格式有两种:

shell格式:RUN u0026lt;命令u0026gt;

RUN echo u0026#39;u0026lt;h1u0026gt;Hello, Docker!u0026lt;/h1u0026gt;u0026#39; u0026gt; /usr/share/nginx/html/index.html

exec格式:RUN ["可执行文件", "参数1", "参数2"]

RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1RUN make -C /usr/src/redisRUN make -C /usr/src/redis install


COPY指令

复制文件指令,格式如下:

COPY u0026lt;源路径u0026gt; u0026lt;容器内目标路径u0026gt;

## 示例COPY a.txt /usr/text/## 多个源文件COPY a.txt b.txt /usr/text/## 通配符形式COPY hom* /mydir/COPY hom?.txt /mydir/


ADD指令

ADD和COPY的格式和性质基本一致。但是在COPY基础上增加了一些功能。比如u0026lt;源路径u0026gt;可以是一个URL,这种情况下,Docker引擎会试图去下载这个链接的文件放到u0026lt;目标路径u0026gt;去。

ADD适合需要自动解压缩的场合,因此可以遵循这样的原则,所有的文件复制均使用COPY指令,仅在需要自动解压缩的场合使用ADD。


CMD指令

就是用于指定容器主进程默认启动命令的。格式如下:

shell格式:CMD u0026lt;命令u0026gt;

exec格式:CMD ["参数1","参数2", ...]

参数列表格式:CMD ["参数1","参数2", ...]。在指定了ENTRYPOINT指定后,用CMD指定具体的参数。


ENTRYPOINT指令

ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。ENTRYPOINT在运行时也可以替代,不过比CMD要略显繁琐,需要通过docker run 的参数 --entrypoint来指定。当指定了ENTRYPOINT后,CMD的含义就发生了改变,不再是直接的运行其命令,而是将CMD的内容作为参数传给ENTRYPOINT指令。


ENV指令

该指令用于设置环境变量,格式有两种:

ENV u0026lt;keyu0026gt; u0026lt;valueu0026gt;

ENV u0026lt;key1u0026gt;=u0026lt;value1u0026gt; u0026lt;key2u0026gt;=u0026lt;value2u0026gt;

这个指令很简单,就是设置环境变量而已,无论是后面的其他指令,如RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。

ENV VERSION=1.0 DEBUG=on NAME="Leisure"$VERSION # 使用环境变量

下列指令可以支持环境变量:ADD、COPY、ENV、EXPOSE、LABEL、USER、WORKDIR、VOLUME、STOPSIGNAL、ONBUILD


ARG指令

ARG指令用于构建参数,和ENV的效果一样,都是设置环境变量。格式如下:

ARG u0026lt;参数名u0026gt;[=u0026lt;默认值u0026gt;]

和ENV不同的是,ARG所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用ARG保存密码之类的信息,因为docker history还是可以看到所有值的。

Dockerfile中的ARG指令是定义参数名称,以及定义其默认值。该默认值可以在构建命令docker build中用--build-arg u0026lt;参数名u0026gt;=u0026lt;值u0026gt;来覆盖


VOLUME指令

该指令用于定义匿名卷,格式为:

VOLUME ["u0026lt;路径1u0026gt;","u0026lt;路径2u0026gt;", ...]

VOLUME u0026lt;路径u0026gt;

VOLUME /data

运行时可以覆盖这个挂载设置:

docker run -d -v mydata:/data mysql:5.7

在这行命令中,就使用了mydata这个命名卷挂载到了/data这个位置,替代了Dockerfile中定义的匿名卷的挂载配置。


EXPOSE指令

该指令用于声明端口,格式为:

EXPOSE u0026lt;端口1u0026gt; [u0026lt;端口2u0026gt; ...]

EXPOSE指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。

声明端口的好处:

1)帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;

2)在运行时使用随机端口映射时,也就是docker run -P时,会自动随机映射EXPOSE的端口。


WORKDIR指令

该指令用于指定工作目录,格式为:

WORKDIR u0026lt;工作目录路径u0026gt;

使用WORKDIR指令可以来指定工作目录(或称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR会帮你建立目录。

初学者可能把Dockerfile等同于Shell脚本来书写,这种错误理解还可能会导致出现下面这样的错误:

RUN cd /appRUN echo "hello" u0026gt; world.txt

如果将这个Dockerfile进行构建镜像运行后,会发现找不到/app/world.txt文件。


USER指令

该指令用于指定当前用户,格式为

USER u0026lt;用户名u0026gt;

USER指令和WORKDIR相似,都是改变环境状态并影响以后的层。USER只是帮你切换到指定用户,这个用户必须是事先建立好的,否则无法切换。


ONBUILD指令

ONBUILD是一个特殊的指令,它后面跟的是其他指令,比如RUN,COPY等,而这些指令,在当前镜像构件时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。Dockerfile中的其他指令都是为了定制当前镜像而准备的,唯有ONBUILD是为了帮助别人定制自己而准备的。


MAINTAINER指令

用于指定作者,格式为:

MAINTAINER u0026lt;nameu0026gt;

MAINTAINER leisure u0026lt;leisure.wangu0026gt;


cmd命令数字雨教程「cmd一键清除垃圾命令」

cmd命令数字雨教程「cmd一键清除垃圾命令」

本文到此结束,希望对大家有所帮助。

标签:
收到0个赞
输入手机号查物流单号(输入手机号查物流单号德邦快递)

输入手机号查物流单号(输入手机号查物流单号德邦快递)

夏团来为大家解答输入手机号查物流单号
adobepremiereprocs4(adobepremiereprocs4)

adobepremiereprocs4(adobepremiereprocs4)

大家好,一只小美来为大家解答adobeprem
无线鼠标怎么连接(无线鼠标怎么连接平板电脑)

无线鼠标怎么连接(无线鼠标怎么连接平板电脑)

关于无线鼠标怎么连接,这个很多人还不
airdrop怎么用(airdrop咋用)

airdrop怎么用(airdrop咋用)

大家好,linda来为大家解答airdrop怎么用以
三星m3375hd(三星M3375HD怎么样)

三星m3375hd(三星M3375HD怎么样)

大家好,linda来为大家解答三星m3375hd以下
能上网qq上不去(可以上网,qq却登不进去)

能上网qq上不去(可以上网,qq却登不进去)

大家好,一只小美来为大家解答能上网
盗版win7升级win10(盗版win7升级win10数据会丢失吗)

盗版win7升级win10(盗版win7升级win10数据会丢失吗)

大家好,小乐来为大家解答盗版win7升级
三星e1080和天玑1100哪个好(三星e1080对比天玑1000+)

三星e1080和天玑1100哪个好(三星e1080对比天玑1000+)

大家好,来来为大家解答三星e1080和天玑
苹果越狱后怎么还原系统(苹果越狱教程)

苹果越狱后怎么还原系统(苹果越狱教程)

大家好,小乐来为大家解答苹果越狱后怎
关于我们 | 版权声明 | 免责声明 | 联系我们
免责声明:知识网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅代表作者本人意见,若因此产生任何纠纷作者本人负责,本站亦不为其版权负责! 如有问题,请联系我们
CopyRight©1999-2024 www.44jj.com All Right Reserved 豫ICP备16009659号