cdlinux镜像文件在哪里 Docker 的应用场景在哪里?

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

cdlinux镜像文件在哪里

一、引言
Dockerfile是用于构建Docker镜像的脚本文件,由一系列命令和参数组成。本文将介绍编写Dockerfile文件的三个基本步骤:docker build、docker run。

cdlinux镜像文件在哪里

二、DockerFile构建过程解析
2.1 Dockerfile基础知识
Dockerfile中的每个保留字指令都必须使用大写字母,并且后面至少要跟随一个参数。指令按照从上到下的顺序执行,使用”#”表示注释。每个指令都会创建一个新的镜像层,并对镜像进行提交。

2.2 Docker执行Dockerfile流程
Docker从基础镜像运行一个容器,执行一条指令并对容器进行修改,类似于docker commit的操作,提交一个新的镜像层。然后,Docker基于刚提交的镜像运行一个新容器,执行Dockerfile中的下一条指令,直到所有指令都执行完成。

2.3 Dockerfile的作用
从应用软件的角度来看,Dockerfile、Docker镜像和Docker容器分别代表软件的三个不同阶段。Dockerfile面向开发,定义了进程所需的一切内容。Docker镜像成为交付标准,当运行Docker镜像时,会真正开始提供服务。Docker容器用于直接提供服务。

三、DockerFile体系结构(保留字指令)

FROM [--platform=]  [AS ]
FROM [--platform=]  [:]   [AS ]
FROM [--platform=]  [@] [AS ]
LABEL maintainer="步尔斯特 "
LABEL description="This is my ubuntu"

3.1 FROM指令
FROM指令用于初始化一个新的构建阶段,并设置基础映像。一个Dockerfile可以多次出现FROM,以使用之前的构建阶段作为另一个构建阶段的依赖项。AS name表示为构建阶段命名,在后续的FROM和COPY –from=说明中可以使用这个名称引用此阶段构建的映像。digest是根据镜像内容生成的ID,tag或digest值是可选的。

3.2 MAINTAINER指令
MAINTAINER指令用于描述该镜像的维护人信息,但现在已经不建议使用,统一使用LABEL。

3.3 LABEL指令
LABEL指令用于添加元数据。

RUN /bin/bash -c 'echo hello,myubuntu'
EXPOSE  [/...]

3.3 RUN指令
RUN指令在当前镜像之上的新层中执行命令,在docker build时运行。它有两种形式:shell形式和执行形式。

3.4 EXPOSE指令
EXPOSE指令用于指定当前容器对外暴露的端口。默认为TCP协议,可以指定UDP。

EXPOSE 80/udp

Docker容器在运行时侦听指定的网络端口。可以指定端口是监听TCP还是UDP,默认为TCP。要实际发布端口,可以使用docker run -P来发布和映射一个或多个端口。

3.5 WORKDIR指令
WORKDIR指令用于指定在创建容器后,终端默认登录的工作目录。只有通过WORKDIR创建的目录才会一直存在。可以设置多个WORKDIR,如果提供了相对路径,它将相对于前一条WORKDIR指令的路径。

ENV DIRPATH=/path
WORKDIR $DIRPATH/$DIRNAME
RUN pwd
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y ...

最终pwd命令的输出是/a/b/c。WORKDIR指令可以解析先前使用的ENV。

3.6 变量
变量用$variablename或${variablename}表示。${variable:-word}表示如果variable设置,则结果为该值,否则为word。${variable:+word}表示如果variable设置,则结果为word,否则为空字符串。变量前加$可以转义成普通字符串。

3.7 ENV指令
ENV指令用于在构建镜像过程中设置环境变量。设置的环境变量将持续存在,可以使用docker inspect来查看。使用docker run –env来更改环境变量的值。

ENV MY_PATH /usr/mytest
这个环境变量可以在后续的任何RUN指令中使用,也可以在其他指令中直接使用。

3.8 ARG指令
ARG指令定义变量,与ENV作用相同,但ARG变量不会像ENV变量那样持久化到构建好的镜像中。Docker有一组预定义的ARG变量,可以在Dockerfile中使用这些变量。

VOLUME ["/var/log/"]
VOLUME /var/log

要使用这些变量,可以使用–build-arg标志在命令行传递它们。

3.9 ADD指令
ADD指令将宿主机目录下的文件拷贝进镜像,同时会自动处理URL和解压tar压缩包。可以指定多个资源,路径被解释为相对于构建上下文的源。

3.10 COPY指令
COPY指令类似于ADD,用于拷贝文件和目录到镜像中。它只能从执行docker build所在的主机上读取资源并复制到镜像中。

3.11 VOLUME指令
VOLUME指令用于创建一个具有指定名称的挂载数据卷。它的主要作用是避免重要的数据丢失和容器不断变大。

3.12 CMD指令
CMD指令用于指定容器启动时要运行的命令。每个Dockerfile只能有一条CMD命令,如果指定了多条命令,只有最后一条会被执行。如果用户在运行容器时指定了运行的命令,则会覆盖CMD指定的命令。

3.13 ENTRYPOINT指令
ENTRYPOINT指令用于指定容器启动时要运行的命令。和CMD一样,它也是在指定容器启动程序及参数。不过,它不会被docker run的命令行参数所覆盖,如果要覆盖,需要通过docker run –entrypoint来指定。

3.14 ONBUILD指令
ONBUILD指令用于在构建一个被继承的Dockerfile时运行命令。当另一个Dockerfile使用FROM引用该镜像时,ONBUILD指令会被触发。

STOPSIGNAL signal

3.15 STOPSIGNAL指令
STOPSIGNAL指令用于设置将发送到容器退出的系统调用信号。可以是有效的无符号数,也可以是信号名称。

USER [:]
USER [:]

默认的stop-signal是SIGTERM,在docker stop时会给容器内PID为1的进程发送这个信号。可以通过–stop-signal来设置自定义的信号。

3.16 HEALTHCHECK指令
HEALTHCHECK指令用于指定监控docker容器服务运行状态的程序或指令。

3.17 SHELL指令
SHELL指令用于覆盖用于命令的默认shell。Linux上的默认shell是[“/bin/sh”, “-c”],Windows上是[“cmd”, “/S”, “/C”]。在Windows上特别有用,可以指定多个SHELL指令。

3.18 USER指令
USER指令用于设置用户名(或UID)和可选的用户组(或GID)。

四、实战:制作自己的Ubuntu镜像
如果已经跟着Docker系列学习,可能已经有了一些镜像。新建一个文件夹mydockerfile,用来存放镜像文件Dockerfile。

cdlinux镜像文件在哪里cdlinux镜像文件在哪里cdlinux镜像文件在哪里cdlinux镜像文件在哪里

输入vim Dockerfile,开始制作镜像。输入touch move.txt。最后,输入docker build -t issa/myubuntu:1.15 .。

小知识:
查看和处理虚悬镜像。

cdlinux镜像文件在哪里

赞(0)