github docker镜像(github docker镜像仓库)

github docker镜像(github docker镜像仓库)在官方提供的镜像中 大部分都是基础镜像 他们只提供某个简单的功能 如果想要一个功能更加丰富的镜像 就需要自己制作 比如说一个容器配置完毕后 想要让容器便于传输 就可以封装为一个镜像 或者说希望让自己的容器可以被别人看到 提交到仓库上去 也要先变为镜像 在指令中 可以使用快照的形式快速制作一个镜像 它直接将一个容器导出为镜像 除此之外 还提供了另一种方式构建镜像 编写 是一个文件

大家好,我是讯享网,很高兴认识大家。




在官方提供的镜像中,大部分都是基础镜像,他们只提供某个简单的功能,如果想要一个功能更加丰富的镜像,就需要自己制作。

比如说一个容器配置完毕后,想要让容器便于传输,就可以封装为一个镜像。或者说希望让自己的容器可以被别人看到,提交到仓库上去,也要先变为镜像。

在指令中,可以使用快照的形式快速制作一个镜像,它直接将一个容器导出为镜像。除此之外,还提供了另一种方式构建镜像:编写。

是一个文件,首字母大小写任意,依据这个文件,就可以构建出一个镜像。在联网的状态下,只要有这个文件,就可以构建出任意的镜像。


docker build

命令可以读取文件,并依据文件构建镜像。

语法:

 

讯享网

参数:

  • :指定要使用的路径,默认为当前目录下的文件
  • :指定镜像的名称与标签

具体使用,在稍后编写时一起讲解。


是一个文本文件,内部包含多条指令,这些指令描述了如何构建一个镜像,如果构建的镜像不符合要求,还可以修改反复制作镜像。

的不区分大小写,后续的指令都以大写形式。

使用进行注释:

讯享网

FROM

  • :指定一个基础镜像

语法:

 

指定镜像时,可以使用对这个镜像重命名,这样可以在一个中进行多级构建,这个稍后会讲解。

示例:

讯享网

使用指定基础镜像时,如果基础镜像不存在,那么会自动拉取。


COPY

  • :从宿主机或者其它镜像中拷贝文件

语法:

 

将文件从拷贝到,如果有多个文件,使用逗号分隔。如果在文件名中没有出现空格,可以不用双引号,如果文件名内有空格,就需要使用和。

选项:

  • :修改用户和组
  • :可以从之前的镜像中拷贝文件

拷贝宿主机文件:

讯享网

以上代码指定了一个的基础镜像,并拷贝一个宿主机文件到根目录下。

通过构建镜像:

在这里插入图片描述
讯享网

选项指定镜像名为,随后开始执行内部的指令,可以看到,这就是之前写的指令。

实例化一个容器:

在这里插入图片描述

进入容器后,根目录就多出了文件,这是构建镜像时拷贝进去的。

除此之外,还可以进行多级构建,所谓的多级构建,就是可能最终镜像内部的文件来自不同环境。那么先在某些镜像环境内部生成所需的文件,再把文件拷贝到最终的镜像内。

示例:

 

以上代码,先创建了一个镜像,重命名为,随后创建一个镜像,在镜像中,拷贝来自的内容,把目录下的文件拷贝到自己的根目录。

多级构建时,最终的镜像是最后一个指定的镜像,前面指定的镜像都是为了生成某些文件。

构建镜像:

在这里插入图片描述

最终生成一个镜像。

进入镜像:

在这里插入图片描述

进入后,根目录多出了,输出后得到一个的网页文件,这个文件就是在镜像生成的,最后拷贝到了中。


ENV

  • :设置环境变量

语法:

讯享网

环境变量不仅可以在容器内部使用,还可以在后文通过引用。

示例:

 

定义了一个环境变量,后续可以直接通过取出变量值。


WORKDIR

  • :修改工作目录

语法:

讯享网

在构建镜像时,默认的工作目录都是根目录,如果想要切换目录,可以使用。

示例:

 

以上代码,把宿主机的文件拷贝到容器的目录下。

因为修改了,所以就是。


ADD

  • :将文件添加到镜像中,可以解压缩tar压缩文件

语法:

讯享网

选项:

  • :修改文件所有者和组

此处的非常类似,用法也是一致的,功能都是拷贝文件。

但是比更强大,如果是压缩包,那么会自动完成解压缩。如果是一个,还会完成自动下载

示例:

 

将文件,通过命令,添加到镜像的根目录中。

输出结果:

在这里插入图片描述

创建完镜像再启动后,根目录下的内容不是而是,说明文件被自动解压了。


RUN

  • :在构建镜像的过程中执行命令

语法:

讯享网

在构建镜像的过程中,可以通过执行指定命令,两种语法中,他们的效果其实是不一样的。

直接,会以来执行指令,这可以提供一些的特性,比如可以使用通配符等进行替换,以及运行程序等。

但是使用的形式执行命令,不会具有特性。

示例:

 

以上代码,把宿主机的拷贝到镜像的根目录,这是一个通配符,可以拷贝多个文件。

随后通过执行命令,创建了两个目录。最后把从宿主机拷贝来的文件再拷贝到目录里面,分别使用和两种语法。

输出结果:

在这里插入图片描述

在当前目录下,有、、、四个文件,构建镜像时,可以看到执行成功了,但是失败了。

因为不支持特性,导致无法匹配通配符,最后显示找不到这个文件。


CMD

  • :指定容器启动时执行的命令

语法:

讯享网

示例:

 

这个镜像,在启动时会执行内的命令,输出字符串。

在这里插入图片描述

原先的是,也就是进入命令行,由于输出字符串的命令将其覆盖了,所以无法直接进入命令行。

除此之外,的命令还会进行覆盖,比如内部的多个,后面的会覆盖前面的:

讯享网

最后该镜像的命令是,前两个被覆盖了。

除此之外,在启动容器时用户也可以指定命令,这个命令也可以覆盖:

在这里插入图片描述


ENTRYPOINT

  • :指定容器启动时执行的命令

语法:

 

和的功能是一样的,但是语法特性略有差别。

在中,后面的会覆盖前面的,启动容器时的命令也会覆盖。

在中,一个只有最后一个生效,但是用户输入命令时,会变成的参数,而不是覆盖。

示例:

讯享网

在这里插入图片描述

构建成功后,在启动容器时指定命令,输出结果却不是,而是:

 

这是因为后面的都变成了内部的指令的参数,最后相当于执行:

讯享网

USER

  • :指定运行容器时的用户或用户ID

语法:

 

默认情况下用户为,可以通过命令修改后文执行指令时的用户。

示例:

讯享网

以上代码,通过创建了一个用户,并切换用户为。

输出结果:

在这里插入图片描述

创建容器后,默认用户就是,并且处于该用户的家目录中。


ARG

  • 功能:定义构建时的变量

语法:

 

这个用于指定一些参数,这个参数可以在中通过引用。

示例:

讯享网

将刚才的用户家目录定义在参数中,后续可以直接通过引用。


VOLUME

  • 功能:创建一个匿名卷,并指定挂载点

语法:

 

由于镜像实例化时,用户所处的路径是不确定的,就算确定了路径,也不保证用户存在这个路径,所以在镜像构建阶段不能创建绑定卷,只能创建匿名卷。

在的参数中,指定的就是要进行绑定的匿名卷,可以持久化一些重要数据,就算容器崩溃,用户也有机会找回数据。


小讯
上一篇 2025-05-13 23:29
下一篇 2025-06-17 09:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142645.html