docker ENTRYPOINT [“sh“,“-c“,“java“,“-jar“,“Hello.jar“] 启动失败问题分析

 因为没系统的学过linux语法,所以才会产生如下疑问。大佬请跳过。

问题:当在dockerfile里面配置 ENTRYPOINT  ["sh","-c","java","-jar","Hello.jar"] ,启动对应容器时会无法正常运行,docker 查看日志信息如下所示:

但是配置  ["sh","-c","java -jar Hello.jar"] 却可以。docker 是可以支持多个参数用逗号分割的,所以个人理解上面的两种配置是等同的。

原因定位:接下来以配置 ENTRYPOINT  ["sh","-c","curl","www.baidu.com"]  为例。

1.运行结果对比:

        如果是直接执行 curl www.baidu.com ,效果如下所示

         而用docke配置 ENTRYPOINT  ["sh","-c","curl","www.baidu.com"] 运行容器后查看日志看到的效果如下所示。

2.查看docker运行容器实际执行的命令

用如下命令可以查看容器启动时执行的命令是什么

docker ps -a --non-trunc |grep ${容器名} 

可以看出 docker 启动容器运行的命令如下所示

sh -c curl www.baidu.com

看起来好像也没啥问题

3.基于docker实际执行命令分析错误原因

直接使用docker运行的命令在linux终端执行执行,发现效果和docker容器执行是一样的

而区别在于前面多了 sh -c, 执行 man sh

发现sh -c 只会取后面的第一个参数,既 www.baidu.com 会被忽略掉

4.分析ENTRYPOINT  ["sh","-c","curl www.baidu.com"] 为什么就没问题

继续用如下命令查看容器启动时执行的命令是什么

docker ps -a --non-trunc |grep ${容器名} 

可以看出 docker 启动容器运行的命令如下所示

sh -c 'curl www.baidu.com'

用单引号包起 curl www.baidu.com 了,使其作为一个参数传给sh执行。都是sh若的祸

总结: docker 使用  ENTRYPOINT ["sh","-c" ] 配置时就只能跟一个参数,第三个参数需放完整命令

如果想把完整命令拆成多个逗号分割,就不要加 sh -c,直接使用命令就好 

 ENTRYPOINT ["java","-jar","hello.jar" ]

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

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

相关文章

Hudi入门

一、Hudi编译安装 1.下载 https://archive.apache.org/dist/hudi/0.9.0/hudi-0.9.0.src.tgz2.maven编译 mvn clean install -DskipTests -Dscala2.12 -Dspark33.配置spark与hudi依赖包 [rootmaster hudi-spark-jars]# ll total 37876 -rw-r--r-- 1 root root 38615211 Oct …

Vulnhub内网渗透Jangow01靶场通关

详细请见个人博客 靶场下载地址。 下载下来后是 .vmdk 格式,vm直接导入。 M1请使用UTM进行搭建,教程见此。该靶场可能出现网络问题,解决方案见此 信息搜集 arp-scan -l # 主机发现ip为 192.168.168.15 nmap -sV -A -p- 192.168.168.15 # 端…

【机器学习】在Python中进行K-Means聚类和层次聚类

Python中聚类算法API的使用指南 聚类分析是数据分析中一种常见的无监督学习方法,通过将相似的对象分组在一起,我们能够识别出数据集中的自然分群。本文将介绍如何使用Python中的聚类算法接口,KMeans和层次聚类方法。 K-Means 聚类 K-Means…

同步与异步

同步 通常情况代码都是自上向下一行一行执行的 前边的代码不执行后边的代码也不会执行 同步的代码执行会出现阻塞的情况 一行代码执行慢会影响到整个程序的执行1 解决同步问题 java python通过多线程来解决 node.js通过异步方式来解决 异步 一段代码的执行不会影响到其他的…

【C++】list模拟实现list迭代器失效问题

list模拟实现&list迭代器失效问题 一,list模拟实现1. list的主要框架接口模拟2. list构造&拷贝构造&析构3. list迭代器3.1 普通迭代器3.2 const迭代器 4. 增删查改 二,迭代器失效问题1. list的迭代器失效原因2. 解决办法 一,list…

想到2024年最有前景的副业创业机会?那这个项目你绝对不能错过!

大家好,我是电商花花。 现在看到别人要么都有自己的副业,要么都在做创业项目,你是不是也看的激情澎湃,想要做抖音小店,想要创业赚钱。 2024年做什么副业、创业有盼头?我觉得还得是抖音小店无货源这个电商…

Cookie、Session、Token、JWT

文章目录 1. Cookie1.1 为什么需要Cookie1.2 Cookie是什么1.3 Cookie机制 2. Session2.1 为什么需要Session2.2 Session机制 3. Token3.1 Token简介3.2 Token和Session的区别 4. JWT4.1 JWT简介4.2 JWT的数据结构与使用 5. Gin框架中JWT的使用5.1 安装5.2 使用 1. Cookie 1.1 为…

【滑动窗口】力扣239.滑动窗口最大值

前面的文章我们练习数十道 动态规划 的题目。相信小伙伴们对于动态规划的题目已经写的 得心应手 了。 还没看过的小伙伴赶快关注一下,学习如何 秒杀动态规划 吧! 接下来我们开启一个新的篇章 —— 「滑动窗口」。 滑动窗口 滑动窗口 是一种基于 双指…

Matlab|配电网智能软开关(sop)规划模型

目录 1 主要内容 目标函数 2 部分程序 3 程序结果 3.1 sop选址定容优化模型 3.2 对比算例(不含sop) 4 下载链接 1 主要内容 该程序参考文献《基于改进灵敏度分析的有源配电网智能软开关优化配置》,采用二阶锥算法,以改进的…

动态调整html表格每列宽度

为什么想自动计算列宽呢?因为我有一次拿到一个项目,它里面的列宽都是写死的。后来需要改,一个个的改太麻烦了。 诸如这样的表格在网站上非常常见。我们不对列做设置的话,列宽就会取每列文本内容的最大长度。在只有一条文本非常长…

ubuntu安装开源汇编调试器NASM

安装 安装很简单,直接在终端输入以下命令即可 sudo apt-get install nasm 安装完成后,如果可以查看到nasm的版本号即可视为安装成功 nasm -version 测试 创建汇编文件 创建一个asm文件 vim hello.asm 文件内容如下 section .datahello: db …

Linux随记(八)

一、crontab运行shell脚本,py脚本 (注意事项) 情景描述: 目前有个sh脚本他最初大致内容是。 cat t11.sh#!/bin/bash source /etc/profile /bin/python3 /tmp/1.py sh /tmp/1.sh echo -e "$(date %F)" >…