当前位置:网站首页 > 云计算与后端部署 > 正文

docker模块(docker模型部署)




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

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

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

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


docker build

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

语法:

 
    

参数:

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

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


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

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

使用进行注释:

 
     

FROM

  • :指定一个基础镜像

语法:

 
      

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

示例:

 
      

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


COPY

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

语法:

 
       

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

选项:

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

拷贝宿主机文件:

 
       

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

通过构建镜像:

在这里插入图片描述

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

实例化一个容器:

在这里插入图片描述

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

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

示例:

 
       

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

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

构建镜像:

在这里插入图片描述

最终生成一个镜像。

进入镜像:

在这里插入图片描述

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


ENV

  • :设置环境变量

语法:

 
        

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

示例:

 
        

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


WORKDIR

  • :修改工作目录

语法:

 
         

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

示例:

 
         

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

因为修改了,所以就是。


ADD

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

语法:

 
          

选项:

  • :修改文件所有者和组

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

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

示例:

 
          

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

输出结果:

在这里插入图片描述

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


RUN

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

语法:

 
           

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

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

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

示例:

 
           

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

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

输出结果:

在这里插入图片描述

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

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


CMD

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

语法:

 
            

示例:

 
            

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

在这里插入图片描述

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

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

 
            

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

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

在这里插入图片描述


ENTRYPOINT

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

语法:

 
             

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

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

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

示例:

 
             

在这里插入图片描述

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

 
             

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

 
             

USER

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

语法:

 
              

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

示例:

 
              

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

输出结果:

在这里插入图片描述

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


ARG

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

语法:

 
               

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

示例:

 
               

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


VOLUME

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

语法:

 
                

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

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


到此这篇docker模块(docker模型部署)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ifstream读取文件最后一行(ifstream读取空格)2025-12-13 09:45:05
  • 模型部署的步骤(模型如何部署上线)2025-12-13 09:45:05
  • redis端口6379(redis端口号是多少)2025-12-13 09:45:05
  • 服务器部署项目流程(服务器部署项目流程图)2025-12-13 09:45:05
  • 操作系统教程课后答案(操作系统教程课后答案第五章)2025-12-13 09:45:05
  • samba共享服务 Windows(samba共享服务端口)2025-12-13 09:45:05
  • springboot在服务器上部署(springboot文件服务器搭建)2025-12-13 09:45:05
  • 如何在服务器上部署springboot项目(部署springboot到服务器)2025-12-13 09:45:05
  • 电脑软件后缀名怎么显示(电脑软件后缀名怎么显示在桌面)2025-12-13 09:45:05
  • onnx模型部署修改(onnx模型可视化)2025-12-13 09:45:05
  • 全屏图片