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…

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在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言,这就意味着…

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

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

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

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

Kotlin~Visitor访问者模式

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

docker 资源限制

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

Android 性能调优之bitmap的优化

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

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

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

IDEA用Gradle构建项目时,lombok插件无效的解决办法

Lombok 可用来帮助开发人员消除 Java 的重复代码,尤其是对于简单的 Java 对象(POJO),比如说getter/setter/toString等方法的编写。它通过注解实现这一目的。 正确使用姿势 一、安装Lombok插件 菜单栏File -> Settings ->…

死锁的发生原因和怎么避免

项目场景: 提示:这里简述项目相关背景: 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大) 问题描述 死锁,简单来说就是两个或者两个以上的线程在…

翻转卡片游戏(力扣)

题目 在桌子上有 n 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,然后选择其中一张卡片。 如果选中的那张卡片背面的数字 x 与任意一张卡片的正面的数字都不同&#…

【C语言进阶】数据的存储----整型篇

​ 🍁 博客主页:江池俊的博客 💫收录专栏:C语言——探索高效编程的基石 💻 其他专栏:数据结构探索 ​💡代码仓库:江池俊的代码仓库 🎪 社区:GeekHub 🍁 如果觉…

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用(gitee版) 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…

postgresql表膨胀处理之pgcompacttable部署及使用

环境: 1)redhat-release:CentOS Linux release 7.6.1810 (Core) 2)database version:postgresql 14.6 一、添加pgstattuple pgcompacttable工具使用过程中需要依赖pgstattuple,因此需先添加pgstattuple…

【SEO基础】百度权重是什么意思及网站关键词应该怎么选?

百度权重是什么意思及网站关键词应该怎么选? 正文共:3253字 20图 预计阅读时间:9分钟 ​ 1.什么是网站权重? 这段时间和一些朋友聊到网站权重以及关键词,发现蛮多人对于这两个概念的认知还是存在一些错误的&#xf…