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

news2024/9/26 5:19:22

目录

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.coloradmin.cn/o/832741.html

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

相关文章

新一代的自动化测试利器?puppeteer生态一览

puppeteer是chrome官方出品的无界面浏览器,我们一般称为无头浏览器。 这种浏览器具有普通版浏览器的完备功能,并且可以运行在无界面的服务端,比如远程的linux服务器上,是做ui自动化测试的一个不错的选择。 我们今天就来看一下pu…

智慧林业~经典开源项目数字孪生智慧林业——开源工程及源码

东北林业局的工程和源码免费赠送,帮您实现深林防火的智慧林业。 项目介绍 东北林业局作为东北地区林业管理的重要机构,致力于森林资源保护和防火工作。他们的项目通过先进的技术手段,为林业管理提供可靠的解决方案。 本项目使用数字孪生技术&…

2.3 网络安全协议

数据参考:CISP官方 目录 OSI七层模型TCP/IP体系架构TCP/IP安全架构 一、OSI七层模型 简介 开放系统互连模型(Open System Interconnection Reference Model,OSI)是国际标准化组织(ISO)于1977年发布的…

自动化测试po模式是什么

一、什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage:封装一些最基…

Obsidian之与Typora图片格式相互兼容

Typora设置 因为复制到Typora的图片格式默认是markdown的标准格式,所以主要需要设置“优先使用相对路径”即可。使用相对路径而非绝对路径,能确保将md目录拷贝到其他电脑时,图片能够正常显示。 obsidian设置 在“文件与链接”更改这三处设…

122.买卖股票的最佳时机2

一、题目 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector<vector<int>>dp(n,vector<int>(2,0));//0表示第i天不持有股…

提升维修服务体验:探索上门维修小程序开发的优势

随着社会的发展和科技的进步&#xff0c;上门维修小程序的开发为人们提供了更加便捷和高效的维修服务体验。本文将介绍上门维修小程序开发的优势&#xff0c;以帮助人们更好地了解和利用这一便利工具。   1. 快速预约和响应   上门维修小程序允许用户快速预约维修服务&…

一文带你了解TCP/IP模型以及封装和分用

文章目录 1. 网络协议2. OSI七层网络模型3.TCP/IP (五层/四层)4. 封装和分用 1. 网络协议 网络协议是计算机网络中用于规定数据在网络中传输和处理的规则&#xff0c;它定义了在网络中通信的格式、规范和顺序。网络协议可以分为不同的层次&#xff0c;每个层次负责不同的功能和…

常用正则表达式总结(一)

文章目录 前言 一、元字符----字符集 1、[ns] 只匹配n或s。注意&#xff1a;这里[ ]里面的字符与字符之间是或的关系。 2、[a-z]只匹配abcd....xyz&#xff0c;的小写字母。注意&#xff1a;这里的“-”字符是叫做&#xff1a;连字符。是一种简写。只是在括号里生效。 3、[A…

C++运算符重载详解(赋值、流插入流提取、前置后置++、取地址)

C运算符重载详解 基本介绍运算符重载案列1. 赋值运算符重载2. 前置和后置重载3. cout&#xff0c;cin(流插入&#xff0c;流提取重载)4. 取地址重载 基本介绍 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其 返回值…

Java超级玛丽小游戏制作过程讲解 第一天 创建窗口

package com.sxt;import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;public class MyFrame extends JFrame implements KeyListener {//设置窗口的大小为800*600public MyFrame() {this.setSize(800, 600);//设置窗口中显示this.setLo…

MySQL日志——查询日志

1.查询日志 show variables like %general%;修改mysql的配置文件 /etc/my.cnf文件&#xff0c;添加如下内容&#xff1a; #该选项用来开启查询日志&#xff0c;可选值&#xff1a;0或者1&#xff1b;0代表关闭&#xff0c;1代表开启 general_log1 #设置日志的文件名&#xff0…

数组中的第K个最大元 O(N)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k 2…

c语言实现八大排序详细解析

首先先看排序算法的整体分类 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff…

上海市第十人民医院胃肠外科沈通一:以菌为药,非药而愈

6月29日&#xff0c;2023主动健康与临床营养高峰论坛在西安国际会展中心盛大召开&#xff0c;会议汇集了来自国内医学与营养领域杰出的专家学者&#xff0c;交流分享行业的先进理念和研究成果&#xff0c;为主动营养业界与学界能量交换搭建了新接口&#xff0c;以凝聚学术力量&…

嘉立创EDA画爱心

需要用&#xff1a;折线(L)&#xff0c;两点圆弧&#xff0c;三点圆弧(A)&#xff0c;园形(U)等功能 如下就是画出的图形 2D 3D 去除丝印pcb 2d 3d

RocketMQ安装和简单使用

说明&#xff1a;RocketMQ与RabbitMQ一样&#xff0c;是分布式架构中的一个组件&#xff0c;用来解决微服务之间的异步调用。同类的还有两个&#xff0c;各自的特点如下&#xff1a; Rocket结构 服务启动时 发送消息时 其中各个部分的功能如下&#xff1a; &#xff08;1&…

Kubernetes高可用集群二进制部署(三)部署api-server

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

【C#学习笔记】引用类型(2)

文章目录 ObjectEqualsGetTypeToStringGetHashCode string逐字文本复合格式字符串字符串内插 StringBuilderStringBuilder 的工作原理StringBuilder提供的方法访问字符迭代字符查询字符 dynamic Object 支持 .NET 类层次结构中的所有类&#xff0c;并为派生类提供低级别服务。…

设计模式行为型——迭代器模式

什么是迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;属于行为型模式&#xff0c;其提供一种方法顺序访问一个聚合对象中的各种元素&#xff0c;而又不暴露该对象的内部表示&#xff0c;即不需要知道集合对象的底层表示。编程环境中非常常用的设计模式。 迭代…