Dockerfile常用指令以及使用案例

news/2024/6/20 21:32:08/文章来源:https://blog.csdn.net/lierming__/article/details/137123314

Dockerfile常用指令以及使用案例

1、ADD复制文件

	ADD 指令用于复制文件,格式为:* ADD  <src>...<dest>* ADD ["<src>",..."<dest>"]从 src 目录复制文件到容器的 dest。其中 src 可以是Dockerfile 所在目录的相对路径,也可以是一个URL,还可以是一个压缩包。说明:1)src 必须在构建的上下文内,因为 docker build 命令首先会将上下文路径和其子目录发送到 docker daemon。2)如果 src 是一个 URL ,同时 dest 不以斜杠结尾,dest 将被视为文件, src 对应内容文件将被下载到 dest 。3)如果 src 是一个 URL ,同时 dest 以斜杠结尾,dest 将被视为目录,src 对应内容将被下载到 dest 目录。4)如果 src 是一个目录,那么整个目录下的内容将被复制,包括文件系统元数据。5)如果文件是可识别的压缩包格式,则 docker 会自动解压。例如:ADD   XXXX-0.0.1-SNAPSHOT.jar  app.jar 

2、ARG设置构建参数

   ARG 指令用于设置构建参数。ARG 指令设置的是构建时的环境变量,在容器运行时不会存在这些变量的。例如:ARG  user1=someuser

3、CMD 容器启动命令

  CMD 指令用于为执行容器提供默认值。每个 Dockerfile 只有一个 CMD 命令,如果指定了多个 CMD 命令,那么只有最后一条会被执行,如果启动容器的时指定了运行的命令,则会覆盖CMD 指定的命令。支持 3 种格式:1)CMD ["executable","param1","param2"]-----推荐这种方式2)CMD ["param1","param2"]  ------为 ENTRYPOINT 指令提供预设参数3)CMD command  param1  param2  ------- 在 shell 中执行

4、COPY 复制文件

  复制文件,格式为:1)COPY  <src>....<dest>2)COPY ["<src>",..."<dest>"]复制本地端的 src 到容器的 dest 。COPY指令和 ADD 指令类似,但是 COPY 指令不支持 URL和压缩包。

5、ENTRYPOINT 入口点

 格式为:1)ENTRYPOINT  ["executable","param1","param2"]2)ENTRYPOINT  command  param1  param2ENTRYPOINT 和 CMD 指令的目的一样,都是指定 Docker 容器启动时执行的命令,可多次设置,但只有最后一个有效。

6、ENV 设置环境变量

  ENV 指令用于设置环境变量,格式为:1)ENV <key> <value>2)ENV <key> = <value>...例如: ENV  JAVA_HOME  /path/to/java 

7、EXPOSE 声明暴露的端口

   EXPOSE  指令用于声明在运行时容器提供服务的端口,格式为:EXPOSE  <port>  [<port>...]注意:这里只是一个声明,运行时并不会因为该声明就打开相应的端口。该指令的作用主要是帮助镜像使用者理解该镜像服务的守护端口;其次是当运行时使用随机映射时,会自动映射 EXPOSE 的端口。示例:EXPOSE   port1    // 声明暴露一个端口docker  run  -p  port1  image   // 相应的运行容器使用的命令docker  run  -P image  // 使用 -P 选项启动EXPOSE  port1   port2  port3  // 声明暴露多个端口docker  run  -p  port1   port2  port3  image  // 相应的运行容器使用的命令docker  run  -p   host_port1:port1   -p  host_port2:port2   -p  host_port3:port3   image 

8、FROM 指定基础镜像

  使用 FROM 指令指定基础镜像。FROM 指令必须指定且需要写在其他指令之前。FROM 指令后的所有指令都依赖于该指令所指定的镜像。支持 3 种格式:1)FROM  <image>2)FROM  <image>:<tag>3)FROM  <image>@<digest>

9、LABEL 为镜像添加元数据

   LABEL 指令用于为镜像添加元数据。格式为: LABEL <key> = <value>  <key> = <value>  <key> = <value> ...使用 “  "  ” 和 “  \ ” 转换命令行,例如:LABEL  "com...." = "ACME...."LABEL   com.x = "foo"LABEL   version = "1.0"LABEL   description = "This  text  ill \ that  label-values can span  muttiple lines. "

10、MAINTAINER 指定维护者的信息

   MAINTAINER 指令用于指定维护者的信息,用于为 Dockerfile 署名。格式为: MAINTAINER  <name>

11、RUN 执行命令

   该指令支持两种格式:1)RUN  <command>2)RUN  ["executable" , "param1" , "param2"]

12、USER 设置用户

   USER  指令用于设置启动镜像时的用户或者 UID ,写在该指令后的 RUN 、CMD 以及 ENTRYPOINT 指令都将使用该用户执行命令。格式为:USER  用户名例如:USER   daemon

13、VOLUME 指定挂载点

  VOLUME 指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile 中使用该指令。格式为:VOLUME    ["/data"]例如:VOLUME   /data

14 、WORKDIR指定工作目录

	格式为:WORKDIR  /path/to/workdir切换目录指令,类似于 cd 命令,写在该指令后的 RUN 、CMD 以及 ENTRYPOINT 指令都将该目录作为当前目录,并执行相应的命令。

15 其他

   扩展内容,可自行阅读 https://docs.docker.com/reference/dockerfile/

16 使用Dockerfile 构建镜像,然后启动、访问服务

   一、准备工作执行下面的命令,将项目构建成 jar 包 :mvn  clean  package    二、镜像构建1)在 jar 包所在目录,创建名为 Dockerfile 的文件touch  Dockerfile 2)在 Dockerfile 文件中添加以下内容// 基于哪个镜像FROM  java:8   // 将本地文件夹挂载到当前容器VOLUME  /tmp   // 复制文件到容器ADD   xxxx.jar    app.jar  // 声明需要暴露的端口EXPOSE  8761  // 配置容器启动后执行的命令ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]   3)使用 docker  build  命令构建镜像格式:docker   build   -t   仓库名称/镜像名称(:标签)   Dockerfile 相对位置例如:docker   build   -t   itmuch/xxxx:0.0.1  . 三、启动镜像docker   run   -d    -p   8761:8761  itmuch/xxxx:0.0.1 四、访问服务http://Docker宿主机IP:8761/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1034583.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子积木方案开发商

东莞市酷得智能科技有限公司电子积木方案开发商 提供消费电子解决方案、提供IC技术支持&#xff0c;全国线上线下服务 积木小车底层驱动开发过程主要涉及到以下几个方面&#xff1a; 首先&#xff0c;需要对小车底盘结构、硬件、模块等有深入的了解。底盘承载着机器人定位、导…

Android adb ime 调试输入法

目录 前言列出所有输入法仅列出输入法 id列出所有输入法的所有信息 启用/禁用 输入法启用输入法禁用输入法 切换输入法还原输入法 前言 安装多个输入法后&#xff0c;可以在设置里进行切换。 既然是开发&#xff0c;能用命令就就命令~ ime 帮助说明&#xff1a; ime <c…

入门级深度学习主机组装过程

一 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 二 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。 进行深度学习&…

面试题 之 vue

1.vue里怎样实现双向数据绑定&#xff1f; Viewmodel 中的Domlisteners 工具会帮我们检测页面上Dom元素的变化&#xff0c;如果有变化&#xff0c;则更改Model中的数据&#xff0c;更新model中的数据时&#xff0c;数据事件绑定工具会帮我们更新页面中的Dom元素 2.Vue的响应式原…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

数据库-root密码丢失的重置方案(win11环境)

当在windows系统中安装的mysql由于操作不当&#xff0c;或者密码遗忘&#xff0c;今天测试了一下&#xff0c;可以用以下方法重置root的密码。 mysqlwindows环境root密码重置问题 在win10/11环境下mysql8密码遗忘后的重置密码方案。 停止mysql服务 查找windows中的mysql服务名称…

【讲解下Gitea】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

day02-SpringCloud02(Nacos、Feign、Gateway)

1.Nacos 配置管理 Nacos 除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我们需要一种统一配置管理方案&#x…

图论做题笔记:dfs

Leetcode - 797&#xff1a;所有可能的路径 题目&#xff1a; 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节…

HTTPS跟HTTP有区别吗?

HTTPS和HTTP的区别&#xff0c;白话一点说就是&#xff1a; 1. 安全程度&#xff1a; - HTTP&#xff1a;就像是你和朋友面对面聊天&#xff0c;说的话大家都能听见&#xff08;信息明文传输&#xff0c;容易被偷听&#xff09;。 - HTTPS&#xff1a;就像是你们俩戴着加密耳机…

C#属性显示

功能&#xff1a; 显示对象的属性&#xff0c;包括可显示属性、可编辑属性、及不可编辑属性。 1、MainWindow.xaml <Window x:Class"FlowChart.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sche…

AI 论道|极狐GitLab 客户私享会上海站成功举办

3 月 22 日下午&#xff0c;极狐GitLab 在上海办公室举办了客户私享会&#xff0c;邀请了来自多个行业的多家客户&#xff0c;围绕 AI 提升研发效率的道法术器进行了充分交流。整个交流时长达两个多小时。 极狐GitLab 战略业务与区域发展副总裁何庆出席了此次活动并致开场辞。他…

Transformer模型-softmax的简明介绍

今天介绍transformer模型的softmax softmax的定义和目的&#xff1a; softmax&#xff1a;常用于神经网络的输出层&#xff0c;以将原始的输出值转化为概率分布&#xff0c;从而使得每个类别的概率值在0到1之间&#xff0c;并且所有类别的概率之和为1。这使得Softmax函数特别适…

负载均衡集群

一、集群的基本原理 集群&#xff1a;数据内容是一致的&#xff0c;集群可以被替代 分布式&#xff1a;各司其职&#xff0c;每台服务器存储自己独有的数据&#xff0c;对外作为单点被访问是访问整体的数据&#xff1b; 分布式是不能被替代的&#xff1b;分布式分为MFS、GFS、…

基于springboot+vue+Mysql的教学视频点播系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

设计模式之代理模式解析(上)

代理模式 1&#xff09;概述 1.定义 给某一个对象提供一个代理或占位符&#xff0c;并由代理对象来控制对原对象的访问。 2.作用 当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问&#xff0c;为了保证客户端使用的透明性&#xff0c;所访问…

ssm018简易版营业厅宽带系统+jsp

营业厅宽带系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间…

Python快速入门系列-9(Python项目实战)

第九章:Python项目实战 9.1 开发一个简单的Web应用9.1.1 项目概述9.1.2 环境准备9.1.3 项目结构9.1.4 代码实现9.1.4.1 创建数据库模型9.1.4.2 创建视图9.1.4.3 实用工具函数9.1.4.4 运行应用9.1.5 模板设计9.2 数据分析与可视化项目9.2.1 项目概述9.2.2 环境准备9.2.3 数据分…

主干网络篇 | YOLOv8改进之用RCS-OSA替换C2f(来源于RCS-YOLO)

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文就给大家详细介绍如何将RCS-YOLO…

使用Java流API构建树形结构数据

简介&#xff1a; 在实际开发中&#xff0c;构建树状层次结构是常见需求&#xff0c;如组织架构、目录结构或菜单系统。本教案通过解析给定的Java代码&#xff0c;展示如何使用Java 8 Stream API将扁平化的菜单数据转换为具有层级关系的树形结构。 1. 核心类定义 - Menu Data…