Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)
1.DockerFile介绍
dockerfile 是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
- 编写一个dockerfile文件
- docker build构建成为一个镜像
- docker run 运行镜像
- docker push发布镜像(DockerHub、阿里云镜像仓库)
2.DockerFile构建过程
2.1 DockerFile基础
-
每个保留关键字(指令)都必须是大写字母
-
执行从上到下顺序执行
-
#表示注释
-
每一个指令都会创建一个新的镜像层,并提交!
-
dockerfile 是面向开发的,我们以后要发布姓项目,做镜像,就需要编写dockerfile文件!
2.2 步骤
- DockerFile: 构建文件,定义了一切的步骤,源代码
- DockerImages: 通过DockerFile 构建生成的镜像,最终发布和运行的产品!
- 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的一个测试,
- 首先构建一个简单的 CMD 的Dockerfile的镜像
FROM centos:7
CMD ["ls", "-a"]
- 构建镜像
# 容器名称就叫做cmdtest
docker build -f dockerfile-cmd-test -t cmdtest .
- 运行镜像,就会发现,会执行我们的 CMD指令中的内容,即把当前的目录展示出来
docker run 容器id
- 但是我们想要在 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 的一个测试
- 首先构建一个简单的 ENTRYPOINT 的Dockerfile的镜像
FROM centos:7
ENTRYPOINT ["ls", "-a"]
- 构建镜像
# 容器名称就叫做 entrypoint-test
docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
- 运行镜像,就会发现,会执行我们的 ENTRYPOINT 指令中的内容,即把当前的目录展示出来,到这块是和CMD是没有区别的
docker run 容器id
- 但是我们想要在 run 的时候,后面加命令,例如和上面一样 也加一个 -l
docker run 容器id -l
如上图所示,ENTRYPOINT 时候不是把 run后面加的命令替换掉dockerfile里面的,而是,
将run 后面加的命令,拼接到后面,相当于 ls -al
相关文章:

Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)
1.DockerFile介绍 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile文件docker build构建成为一个镜像docker run 运行镜像docker push发布镜像(DockerHub、阿里云镜像仓库) 2.Dock…...

[软件测试]如何使用Eclipse导入项目并打开
🧑🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法 💻博客主页:渡过晚枫渡过晚枫 👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯] Ὅ…...
emplace_back与push_back异同
vector的emplace_back与push_back 文章目录vector的emplace_back与push_back前言1.区别总览2.push_back支持右值引用不支持传入多个构造参数总是会进行拷贝构造3.emplace_backemplace_back可以接受多个构造参数支持原地构造前言 在vector中,通过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 …...

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

C/C++每日一练(20230301)
目录 1. 冒泡排序法排序 ★ 2. 有效的数独 ★★ 3. 不同的二叉搜索树 II ★★ 附录 二叉搜索树 1. 冒泡排序法排序 输入n(1≤n≤10)个整数,用冒泡排序法对其从小到大排序,共进行n-1趟,要求输出每一趟的排序情…...

Vue项目中components组件的使用笔记
目录 前言 一、components和component的区别? 二、components使用的步骤 1.创建组件vue文件 2.引入组件 3.注册组件 4.应用组件 总结 前言 本文章,只是初步了解记录components的使用步骤。 一、components和component的区别? compo…...
2023软件测试行情不行了?
一、2023年软件测试行业的现状 2020年开年,一不小心,【新冠】黑天鹅从头上飘过,持续影响全国乃至全球的经济,软件行业公司也迎来了不少的冲击,那么一个值得打算入行软件测试行业,或者已经在软件测试行业耕耘…...

【java web篇】数据库连接池Driud的使用
📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言Ὅ…...

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

第十届蓝桥杯省赛——4质数(质数判断,数学函数:开方函数)
题目:试题 D: 质数本题总分:10 分【问题描述】我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算第 2019 个质数是多少?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数&…...
MASKGROUP: HIERARCHICAL POINT GROUPING AND MASKING FOR 3D INSTANCE SEGMENTATION
ABSTRACT 本文研究了 3D 实例分割问题,该问题在机器人技术和增强现实等现实世界中具有多种应用。由于3D物体的周围环境非常复杂,不同物体的分离非常困难。为了解决这个具有挑战性的问题,我们提出了一个新的框架来对 3D 实例进行分组和优化。在实践中,我们首先为每个点学习…...

为什么地图可视化炙手可热?
我们在谈到数据可视化的时候,可能第一反应就是中间有一个地图样式的大屏图。但有没有想过,为什么大多数的可视化大屏中间都是一张地图的样子?这张地图样式的模块究竟是什么呢?它又是怎么做出来的? 其实这张地图样式的…...
JAVA代码审计篇-SQL注入
JAVA代码审计篇-SQL注入1、SQL注入漏洞简介2、SQL注入的条件3、审计方法4、JAVA中执行SQL的几种方式(1)使用JDBC的java.sql.Statement执行SQL语句(2)使用JDBC的java.sql.PreparedStatement执行SQL语句(3)使…...
SpringBoot接口传参方式
常见GET请求和POST请求的区别1.get请求无消息体,只能携带少量数据,且不安全post请求有消息体,可以携带大量数据,且安全2.携带数据的方式:get请求将数据放在url地址中post请求将数据放在消息体body中传参方式get方式---…...

高通平台开发系列讲解(Sensor篇)AlsPs的工作原理及介绍
文章目录 一、什么是ALS?二、什么是距感(PS)?三、AlsPs的工作原理四、AlsPs的特性五、距感的校准参数说明六、光感的校准参数说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 AlsPs 的工作原理及介绍。 一、什么是ALS? 光感的英文叫做Ambient Li…...
集群方式下的java Redis锁 lua脚本
下面说一下集群方式redis 下的原子锁 带超时时间java 代码如下:List<String> keys Collections.singletonList("test_key1");System.out.println("打印前 ::"jedisCluster.get("test_key1"));//获取lua …...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...