Docker ENTRYPOINT 笔记
时间:2022-07-22
本文章向大家介绍Docker ENTRYPOINT 笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 Overview
Docker 中 ENTRYPOINT
一直是个容易混淆的概念,今天浏览了一下官网,简单总结一下。官网的参考链接如下。
2 ENTRYPOINT
在 Dockerfile 中,ENTRYPOINT
是作为容器运行的命令存在的,但是他是非必须的,原因是除了可以在 Dockerfile 中填写 ENTRYPOINT
,你还可以写 CMD
,甚至同时使用两者。
如果指定了 ENTRYPOINT
,大部分的 Docker 镜像都定义了 ENTRYPOINT
,即使不写,你依然可以从你的 base 镜像中获取到 ENTRYPOINT
,前提当然是 base 镜像有定义。另外,就算你的 Dockerfile 定义了 ENTRYPOINT
,你还可以通过命令行的模式,在启动容器的时候提供 --entrypoint
选项来覆盖。下面的例子的含义是,通过 --entrypoint
来覆盖 Dockerfile 里定义的 ENTRYPOINT
,然后给 CMD
命令传入 -l /tmp
的命令。
$ docker run --entrypoint=/bin/ls ubuntu -l /tmp
---结果---
total 0
以上例子,你可以想象成你定义的 Dockerfile 是这样的。
FROM ubuntu
ENTRYPOINT ["/bin/ls"]
CMD ["-l", "/tmp"]
3 Summary
实践中,ENTRYPOINT
并不会经常被覆盖,但是如果镜像文件中指定了 ENTRYPOINT
,那么一定程度上,会让你的镜像更 flexible,或者说更容易使用。
举个 Spark 官方提供的 Dockerfile 为例,最后也是使用了 ENTRYPOINT
,那么他的灵活性体现在哪里呢?
我运行镜像的时候,可以通过 --entrypoint
来覆盖默认的 ENTRYPOINT
命令,比如我想看看镜像里的文件的时候,可以这么干。
$ docker run --entrypoint=/bin/ls spark:tenc-spark -l /opt/spark
---结果---
total 40
-rw-r--r-- 1 root root 0 Jul 21 01:57 RELEASE
drwxr-xr-x 2 root root 4096 Jul 21 01:57 bin
drwxr-xr-x 2 root root 4096 Jul 21 01:57 conf
drwxr-xr-x 5 root root 4096 Jul 21 01:57 data
drwxr-xr-x 4 root root 4096 Jul 21 01:57 examples
drwxr-xr-x 2 root root 12288 Jul 21 01:57 jars
drwxr-xr-x 2 root root 4096 Jul 21 01:57 sbin
drwxr-xr-x 2 root root 4096 Jul 21 01:57 tests
drwxr-xr-x 2 root root 4096 Jul 21 01:57 work-dir
- (58) 文本文件和字符流 / 计算机程序的思维逻辑
- Python爬虫—破解JS加密的Cookie
- Python通过抓包和使用cookie爬取微博完全讲解
- (50) 剖析EnumMap / 计算机程序的思维逻辑
- 认识九大经典sql模式
- 构建一个pip安装的车辆路径显示的Python包
- 如何编写复杂sql
- Python机器学习工具:Scikit-Learn介绍与实践
- (51) 剖析EnumSet / 计算机程序的思维逻辑
- mysql性能优化的几条重要建议
- Python爬虫抓取知乎所有用户信息
- Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案
- Django 博客教程:前言和环境安装(连载一)
- (52) 抽象容器类 / 计算机程序的思维逻辑
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 绘图代码|多组学数据可视化的高端玩法
- Java单元测试——Mock技术配置
- 简单的场景分析LinearLayout 源码
- 避免栽坑之掌握Jenkins工作原理
- 如何检测JavaScript中的死循环?
- vue插槽2.6.0+
- 聊聊claudb的transaction command
- Lombok 的作者,成功讨伐 IntelliJ IDEA!
- springboot2之优雅处理返回值
- 通过NVM管理Node.js多版本
- 探究 Android 签名机制和原理
- “有迹可循”的灰盒测试分析
- 想用 Gitee 做图床工具,失败了~~
- Nginx系列:配置跳转的常用方式
- Python骚操作:一行代码实现探索性数据分析