Dockerfile面试题(CMD、ENTRYPOINT与RUN命令对比)

目录

Dockerfile面试题

CMD、ENTRYPOINT与RUN命令对比

(一)CMD命令

(二)RUN命令

(三)ENTRYPOINT 

(四)RUN和CMD、ENTRYPOINT支持参数形式命令 :


Dockerfile面试题

CMD、ENTRYPOINT与RUN命令对比

(一)CMD命令

        是在容器启动后执行的命令,一个Dockerfile可以有多个CMD,但是只有最后一个CMD生效。当容器启动时如果指定了命令,那么CMD的命令将被忽略。

例:

下载alpine镜像

docker pull alpine

1、建立工作目录

2、编写Dockerfile文件

配置如下:

FROM alpine:latest
WORKDIR /workdir
ENV  name "Docker"
CMD  echo $name

3、生成新的镜像 secondtonone1/alpine-cmd 

docker build -t secondtonone1/alpine-cmd .

4、生成后生成容器

docker run --rm --name cmd secondtonone1/alpine-cmd

可以看到输出Docker了 

接下来我们在容器启动时后边增加一个命令

docker run --rm -it --name cmd

secondtonone1/alpine-cmd sh

此时进入了容器内部,执行了sh命令。Dockerfile中的CMD被忽略了。 

(二)RUN命令

        是在构建镜像时执行的命令,我们可以安装一些应用。

例:Dockerfile文件如下:

FROM ubuntu:18.04
WORKDIR /workdir
RUN  apt-get update
RUN  apt-get install -y net-tools
CMD  netstat

1、生成镜像 

docker build -f Dockerfile -t cmd2 .

2、生成容器并启动 

docker run -it --rm  cmd2

可以看到容器启动后调用了cmd命令netstat 

(三)ENTRYPOINT 

        和CMD不同,他不会被docker启动后执行的命令覆盖

例:Dockerfile文件如下:

FROM ubuntu:18.04
WORKDIR /workdir
RUN  apt-get update
RUN  apt-get install -y net-tools
ENTRYPOINT  netstat

1、生成镜像 

docker build -f Dockerfile -t cmd3 .

2、生成容器并启动 

docker run -it --rm  cmd3 /bin/bash

可以看到容器启动后并没有执行/bin/bash命令,而是调用了ENTRYPOINT命令netstat 

(四)RUN和CMD、ENTRYPOINT支持参数形式命令 :

配置如下:

FROM ubuntu:18.04
WORKDIR /workdir
ENV  name "Docker"
RUN  ["/bin/bash", "-c", "apt-get update"] 
RUN  ["/bin/bash", "-c", "apt-get install -y net-tools"] 
CMD  ["/bin/bash","-c","echo Hello $name !"]

1、生成镜像

docker build -f ./Dockerfile -t cmd4 .

2、运行容器 :

docker run -it --rm cmd4

可以看到输出了Hello, Docker! 

 

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

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

相关文章

【M波段2D双树(希尔伯特)小波多分量图像去噪】基于定向M波段双树(希尔伯特)小波对多分量/彩色图像进行降噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ANC-ZKUXT2系列FPGA隔离卡网闸版DPDK虚拟kni网口

1. 环境配置及依赖工具,在DPDK使用方法一文中已经介绍,不再重复 yum groupinstall "Development Tools" -y //For RHEL/Fedoraapt install -y build-essential //For Ubuntu/Debian 管理 NUMA 的库:yum install -y numactl-deve…

C# 遍历数组中的对象委托方法

1,声明一个委托,理解这个可以装没有返回值和参数方法。 public delegate void StackEvent(); 2,声明一个类 Cs2 public class Cs2{public StackEvent tes;public Cs2(StackEvent stackEvent){tes stackEvent;}public string url { get; se…

Python pypinyin module 的应用

安装pypinyin module 这个模块主要处理中文拼音可以用来做很多很有趣的事情 如何使用help 函数 将help 函数的输出保存到文件中去 一眼会 import sys import pypinyinwith open(帮助文档.txt,w) as f:sys.stdout f help(pypinyin) 如何查找模块中内置的函数 类 函数 la…

springboot+vue农产品特产商城销售平台_50kf2 多商家

随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,南阳特产销售平台展现了其蓬勃生命力和广阔的前景。与此同时,为解决…

2023年测试岗,手动测试vs自动化测试,“我“该如何抉择...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在软件测试行业中…

OpenCL编程指南-9.1命令、队列、事件

概述 命令队列是OpenCL的核心。平台定义了一个上下文,其中包含一个或多个计算设备。每个计算设备可以有一个或多个命令队列。提交到这些队列的命令将完成OpenCL程序的具体工作。 在一个简单的OpenCL程序中,提交到一个命令队列的命令会按顺序执行。一个…

windows下mysql的下载与安装

文章目录 1 下载2 安装目录下新建data文件夹和my.ini3 安装4设置密码与远程连接5 配置环境变量6 navicate连接成功 1 下载 官网地址 https://www.mysql.com/点击下载 社区下载 社区服务 选择版本下载 2 安装目录下新建data文件夹和my.ini my.ini 内容如下 [mysql] # 设置my…

【C#学习笔记】内存管理

文章目录 分配内存释放内存GC标记清除算法分代算法 .NET的GC机制有这样两个问题: 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言,这就意味着…

java-redis

1.Jedis 1.1 依赖引用 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.1</version> </dependency> 1.2 测试代码 RestController public class TestController {GetM…

〖Python网络爬虫实战㉝〗- aiohttp 的基本使用

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度…

二次开发了个寂寞之HttpRunnerManager接口测试管理平台

文章目录 一、背景1、二次开发1.1、首页1.2、项目列表1.3、用例列表1.4、新增用例1.5、测试套件1.6、查看报告 二、总结 一、背景 自入职起&#xff0c;就在公司内部引入开源接口测试平台&#xff0c;选一个大家勉强看得懂源码的开源项目&#xff0c;方便后续的二次开发&#x…

数据量特别大,自己手写虚拟dom节点展示数据。

当数据量特别大时&#xff0c;一次性全部展示出所有数据&#xff0c;会造成页面渲染慢&#xff0c;白屏&#xff0c;卡顿的现象。严重影响体验。为解决这样的问题&#xff0c;可以尝试使用虚拟加载dom节点的方式。 原理&#xff1a;根据屏幕高度和一条数据展示所需要的dom节点…

【每日一题】—— C. Mocha and Hiking(Codeforces Round 738 (Div. 2))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

Kotlin~Visitor访问者模式

概念 将数据结构和操作分离&#xff0c;使操作集合可以独立于数据结构变化。 角色介绍 Visitor&#xff1a;抽象访问者&#xff0c;为对象结构每个具体元素类声明一个访问操作。Element&#xff1a;抽象元素&#xff0c;定义一个accept方法ConcreteElement&#xff1a;具体元…

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup&#xff08;Control Group 控制组&#xff09;实现容器对物理资…

Android 性能调优之bitmap的优化

背景 Android开发中&#xff0c;加载图片过多、过大很容易引起OutOfMemoryError异常&#xff0c;即我们常见的内存溢出。因为Android对单个应用施加内存限制&#xff0c;默认分配的内存只有几M&#xff08;具体视不同系统而定&#xff09;。而载入的图片如果是JPG之类的压缩格…

【unity】Pico VR 开发笔记(视角移动)

【unity】Pico VR 开发笔记&#xff08;视角移动&#xff09; 视角移动是简单的基础功能&#xff0c;这里区别于头显定位获得的小范围位移&#xff0c;是长距离不影响安全边界的位移方式。的常见的位移方式有两种&#xff0c;其一是触发后瞬间传送到指定位置&#xff0c;其次是…

flutter开发实战-BackdropFilter高斯模糊子Widget控件

flutter开发实战-BackdropFilter高斯模糊子Widget。 最近开发过程中遇到需要将控件进行模糊&#xff0c;比如iOS的effect的模糊效果。那在flutter中就需要用到了BackdropFilter 一、BackdropFilter BackdropFilter属性定义 BackdropFilter({Key key, required ImageFilter …

微服务---介绍

目录 1.微服务架构5个核心问题 2.微服务架构实现方案 3.微服务架构更多的是架构思想 4.学习微服务的意义 5.微服务架构一般采用 6.服务器有三种类型 1.微服务架构5个核心问题 &#xff08;解决这些问题都是依托于中间件&#xff0c;学微服务也是学这些中间件&#xff09;…