当前位置: 首页 > news >正文

Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)

1.DockerFile介绍

dockerfile 是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

  1. 编写一个dockerfile文件
  2. docker build构建成为一个镜像
  3. docker run 运行镜像
  4. docker push发布镜像(DockerHub、阿里云镜像仓库)

2.DockerFile构建过程

2.1 DockerFile基础

  1. 每个保留关键字(指令)都必须是大写字母

  2. 执行从上到下顺序执行

  3. #表示注释

  4. 每一个指令都会创建一个新的镜像层,并提交!
    在这里插入图片描述

  5. dockerfile 是面向开发的,我们以后要发布姓项目,做镜像,就需要编写dockerfile文件!

2.2 步骤

  1. DockerFile: 构建文件,定义了一切的步骤,源代码
  2. DockerImages: 通过DockerFile 构建生成的镜像,最终发布和运行的产品!
  3. Docker容器:容器就是镜像运行起来提供服务器

3.DockerFile的指令

FROM 基础镜像, 一切从这里开始构建

MAINTAINER 镜像是谁写的,姓名+邮箱

RUN 镜像构建的时侯需要运行的命令

ADD 步骤:比如mysql的镜像,这个mysql压缩包!添加内容

WORKDIR 镜像的工作目录

VOLUME 挂载的目录

EXPOSE 保留端口配罝

CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD 当构建一个被跳承 DockerFile 这个时候就会运行 ONBUILD 的指令。触发指令。

COPY 类似ADD,将我们文件拷贝到镜像中

ENV 构建的时候设買环境变量!

  • 例如构建一个自己的centos
FROM centos:7
MAINTAINER tongweiwei<2290581805@qq.com>ENV MYPATH /user/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

4. 构建命令

docker build -f dockerfile文件路径 -t 镜像名称:[tag] .docker build -f mydockerfile-centos -t mycentos:0.1 .

在这里插入图片描述
在这里插入图片描述

5.查看镜像的构建历史

docker history 容器id

在这里插入图片描述

6. CMD 和 ENTRYPOINT 区别

4.1 CMD的一个测试,

  1. 首先构建一个简单的 CMD 的Dockerfile的镜像
FROM centos:7
CMD ["ls", "-a"]
  1. 构建镜像
# 容器名称就叫做cmdtest
docker build -f dockerfile-cmd-test -t cmdtest .
  1. 运行镜像,就会发现,会执行我们的 CMD指令中的内容,即把当前的目录展示出来
docker run 容器id

在这里插入图片描述

  1. 但是我们想要在 run 的时候,后面加命令就会报错,例如我run的时候加一个
    -l,就会报错, 结合CMD中的命令,则会执行该命令,-l
docker run 容器id -l

报错

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.

CMD的指令下,-l 替换了 CMD [“ls”, “-a”]命令,-l不是命令所以会报错!

4.2 ENTRYPOINT 的一个测试

  1. 首先构建一个简单的 ENTRYPOINT 的Dockerfile的镜像
FROM centos:7
ENTRYPOINT ["ls", "-a"]
  1. 构建镜像
# 容器名称就叫做 entrypoint-test
docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .

在这里插入图片描述
在这里插入图片描述

  1. 运行镜像,就会发现,会执行我们的 ENTRYPOINT 指令中的内容,即把当前的目录展示出来,到这块是和CMD是没有区别的
docker run 容器id

在这里插入图片描述

  1. 但是我们想要在 run 的时候,后面加命令,例如和上面一样 也加一个 -l
docker run 容器id -l

在这里插入图片描述

如上图所示,ENTRYPOINT 时候不是把 run后面加的命令替换掉dockerfile里面的,而是,
将run 后面加的命令,拼接到后面,相当于 ls -al

相关文章:

Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)

1.DockerFile介绍 dockerfile 是用来构建docker镜像的文件&#xff01;命令参数脚本&#xff01; 构建步骤&#xff1a; 编写一个dockerfile文件docker build构建成为一个镜像docker run 运行镜像docker push发布镜像&#xff08;DockerHub、阿里云镜像仓库&#xff09; 2.Dock…...

[软件测试]如何使用Eclipse导入项目并打开

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d…...

emplace_back与push_back异同

vector的emplace_back与push_back 文章目录vector的emplace_back与push_back前言1.区别总览2.push_back支持右值引用不支持传入多个构造参数总是会进行拷贝构造3.emplace_backemplace_back可以接受多个构造参数支持原地构造前言 在vector中&#xff0c;通过push_back与emplace_…...

【C语言航路】第十五站:程序环境和预处理

目录 一、程序的翻译环境和执行环境 二、编译和链接 1.翻译环境 2.编译本身也分为几个阶段 3.运行环境 三、预处理 1.预定义符号 2.#define 1.#define定义标识符 2.#define定义宏 3.#define 替换规则 4.#和## 5.带副作用的宏参数 6.宏和函数的对比 7.命名约定 …...

Vue3 - 获取 Proxy 对象代理中包裹的 “真实数据“,解决对象或数组打印后是 Proxy 对象无法拿到原始数据的问题(提供 2 种详细解决方案)

前言 在 Vue3 中很多数据都被 Proxy 代理对象 “包裹”(无法拿到其真正的原始数据),另外就是请求回来的数据,例如通过 res.data.data 拿到了一个数组对象格式的数据。但是这个数据被 Proxy 包裹,你根本拿不到值无法进行处理。 本文实现了 Vue3 取到被 proxy 对象包裹的原始…...

ESP32设备驱动-ML8511紫外线传感器驱动

ML8511紫外线传感器驱动 1、ML8511介绍 ML8511 是一款紫外线传感器,适用于室内或室外获取紫外线强度。 ML8511 配备了一个内部放大器,可根据紫外线强度将光电流转换为电压。 这种独特的功能提供了与 ADC 等外部电路的简单接口。 在掉电模式下,典型的待机电流为 0.1 μ \mu…...

SC12B触摸感应芯片评测方案(1)

MM32F0160SC12B Touch Application Evaluation 文章目录MM32F0160SC12B Touch Application EvaluationIntroduction & RequirementHardwareSC12B & SC12B Sample Demo boardMini-F0160 boardSoftwareMCU Software - MM32F0160PC Tool - FreeMASTERSummaryIntroduction …...

企业如何实现精细化人员管理?五大业务场景值得关注

近年来&#xff0c;随着大数据、人工智能和云计算等信息技术不断升级与渗透&#xff0c;处在数字化变革的劳动力密集型企业希望利用更加智能化的劳动力管理软件&#xff0c;帮助企业实现规范化的管理。 面对企业劳动力管理理念的变化&#xff0c;以及数字化转型的发展渗透&…...

C/C++每日一练(20230301)

目录 1. 冒泡排序法排序 ★ 2. 有效的数独 ★★ 3. 不同的二叉搜索树 II ★★ 附录 二叉搜索树 1. 冒泡排序法排序 输入n&#xff08;1≤n≤10&#xff09;个整数&#xff0c;用冒泡排序法对其从小到大排序&#xff0c;共进行n-1趟&#xff0c;要求输出每一趟的排序情…...

Vue项目中components组件的使用笔记

目录 前言 一、components和component的区别&#xff1f; 二、components使用的步骤 1.创建组件vue文件 2.引入组件 3.注册组件 4.应用组件 总结 前言 本文章&#xff0c;只是初步了解记录components的使用步骤。 一、components和component的区别&#xff1f; compo…...

2023软件测试行情不行了?

一、2023年软件测试行业的现状 2020年开年&#xff0c;一不小心&#xff0c;【新冠】黑天鹅从头上飘过&#xff0c;持续影响全国乃至全球的经济&#xff0c;软件行业公司也迎来了不少的冲击&#xff0c;那么一个值得打算入行软件测试行业&#xff0c;或者已经在软件测试行业耕耘…...

【java web篇】数据库连接池Driud的使用

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…...

无损音乐格式:FLAC和ALAC

前言&#xff1a;我最近在弄苹果的airplay项目&#xff0c;发现airplay2对比airplay多了音质方面的增强。AAC和MP3接触过&#xff0c;但对FLAC和ALAC完全不了解&#xff0c;整理学习资料汇总成如下信息&#xff1a; AirPlay2 在2017年推出&#xff0c;在前一代AirPlay的基础上…...

第十届蓝桥杯省赛——4质数(质数判断,数学函数:开方函数)

题目&#xff1a;试题 D: 质数本题总分&#xff1a;10 分【问题描述】我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算第 2019 个质数是多少&#xff1f;【答案提交】这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&…...

MASKGROUP: HIERARCHICAL POINT GROUPING AND MASKING FOR 3D INSTANCE SEGMENTATION

ABSTRACT 本文研究了 3D 实例分割问题,该问题在机器人技术和增强现实等现实世界中具有多种应用。由于3D物体的周围环境非常复杂,不同物体的分离非常困难。为了解决这个具有挑战性的问题,我们提出了一个新的框架来对 3D 实例进行分组和优化。在实践中,我们首先为每个点学习…...

为什么地图可视化炙手可热?

我们在谈到数据可视化的时候&#xff0c;可能第一反应就是中间有一个地图样式的大屏图。但有没有想过&#xff0c;为什么大多数的可视化大屏中间都是一张地图的样子&#xff1f;这张地图样式的模块究竟是什么呢&#xff1f;它又是怎么做出来的&#xff1f; 其实这张地图样式的…...

JAVA代码审计篇-SQL注入

JAVA代码审计篇-SQL注入1、SQL注入漏洞简介2、SQL注入的条件3、审计方法4、JAVA中执行SQL的几种方式&#xff08;1&#xff09;使用JDBC的java.sql.Statement执行SQL语句&#xff08;2&#xff09;使用JDBC的java.sql.PreparedStatement执行SQL语句&#xff08;3&#xff09;使…...

SpringBoot接口传参方式

常见GET请求和POST请求的区别1.get请求无消息体&#xff0c;只能携带少量数据&#xff0c;且不安全post请求有消息体&#xff0c;可以携带大量数据&#xff0c;且安全2.携带数据的方式&#xff1a;get请求将数据放在url地址中post请求将数据放在消息体body中传参方式get方式---…...

高通平台开发系列讲解(Sensor篇)AlsPs的工作原理及介绍

文章目录 一、什么是ALS?二、什么是距感(PS)?三、AlsPs的工作原理四、AlsPs的特性五、距感的校准参数说明六、光感的校准参数说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 AlsPs 的工作原理及介绍。 一、什么是ALS? 光感的英文叫做Ambient Li…...

集群方式下的java Redis锁 lua脚本

下面说一下集群方式redis 下的原子锁 带超时时间java 代码如下&#xff1a;List<String> keys Collections.singletonList("test_key1");System.out.println("打印前 &#xff1a;&#xff1a;"jedisCluster.get("test_key1"));//获取lua …...

实测对比:openEuler三大桌面环境UKUI/DDE/XFCE安装体验与性能消耗

实测对比&#xff1a;openEuler三大桌面环境UKUI/DDE/XFCE安装体验与性能消耗 当技术决策者面对openEuler操作系统时&#xff0c;桌面环境的选择往往成为影响工作效率的关键因素。本文将基于openEuler 24.03 LTS环境&#xff0c;深度实测UKUI、DDE和XFCE三大主流桌面环境&…...

高效游戏辅助与开源工具:League Toolkit 智能英雄联盟助手全解析

高效游戏辅助与开源工具&#xff1a;League Toolkit 智能英雄联盟助手全解析 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在竞…...

LeetCode 3548. 等和矩阵分割2 详细题解(前缀和+二分+连通性分析)

LeetCode 3548. 等和矩阵分割2 详细题解&#xff08;前缀和二分连通性分析&#xff09; &#x1f3f7;️ 标签&#xff1a;前缀和、二分查找、连通性、哈希表、矩阵、周赛难题 &#x1f4ca; 难度&#xff1a;中等 | &#x1f4dd; 题目编号&#xff1a;3548 | &#x1f5c2;️…...

告别振动噪音:用DRV8825模块的细分功能,让你的3D打印机或CNC雕刻机运行更安静平稳

静音革命&#xff1a;DRV8825微步进技术在3D打印与CNC中的实战应用 当你的3D打印机在深夜工作时发出刺耳的嗡嗡声&#xff0c;或是CNC雕刻机在低速运行时产生令人不适的振动&#xff0c;这不仅影响工作环境&#xff0c;更会直接反映在成品质量上——那些本应光滑的表面出现的细…...

Minimum Snap轨迹优化:从理论到实践的无人机巡检路径规划

1. 为什么无人机巡检需要Minimum Snap算法 去年给某电力公司做巡检方案时&#xff0c;他们的老飞手给我看了一段视频&#xff1a;无人机在高压线塔间穿行时&#xff0c;摄像头画面抖动得像在跳机械舞&#xff0c;关键部位的图像全是模糊的残影。这正是传统航点飞行模式的典型痛…...

避坑指南:为什么你的神经网络总过拟合?Dropout层参数设置全解析

避坑指南&#xff1a;为什么你的神经网络总过拟合&#xff1f;Dropout层参数设置全解析 训练神经网络时&#xff0c;最令人沮丧的莫过于看到验证集准确率在某个点突然停滞不前&#xff0c;而训练集指标却持续攀升——典型的过拟合信号。作为从业者&#xff0c;我们常陷入两难&a…...

颠覆式突破:Video-subtitle-remover如何实现95%精度的视频字幕智能去除

颠覆式突破&#xff1a;Video-subtitle-remover如何实现95%精度的视频字幕智能去除 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除&#xff0c;无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API&#xff0c;本地实现。…...

UNet全维度改进模型库重磅发布

突破边界&#xff0c;赋能工业质检&#xff1a;UNet全维度改进模型库重磅发布 在工业缺陷检测领域&#xff0c;分割精度与效率的平衡始终是技术落地的核心命题。我们倾力打造**「UNet全维度改进模型库」&#xff0c;以37项原创性结构创新为引擎&#xff0c;深度融合注意力机制…...

联合仿真模型验证:Carsim + 车辆动力学模型(十四自由度)实践

联合仿真模型验证Carsim车辆动力学模型(十四自由度)软件使用:Carsim2019.0Matlab/Simulink 适用场景:采用模块化建模方法&#xff0c;搭建14自由度整车模型&#xff0c;将此模型与carsim进行联合仿真模型验证。 (模型和 carsim存在一定误差) 产品 simulink源码包含如下模块:工况…...

SDMatte Web界面实操手册:从上传到下载透明PNG的完整步骤

SDMatte Web界面实操手册&#xff1a;从上传到下载透明PNG的完整步骤 1. 认识SDMatte&#xff1a;你的智能抠图助手 SDMatte是一款专为高质量图像抠图设计的AI工具&#xff0c;它能帮你轻松完成各种复杂的抠图任务。想象一下&#xff0c;你拍了一张漂亮的玻璃杯照片&#xff…...