首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用docker run将命令行参数传递到Shell脚本文件

在使用docker run命令时,将命令行参数传递到Shell脚本文件可以通过以下方式实现:

  1. 使用环境变量:可以在docker run命令中使用-e参数设置环境变量,然后在Shell脚本中通过$变量名的方式获取传递的参数。例如:
代码语言:shell
复制

docker run -e PARAMETER=value image_name

代码语言:txt
复制

在Shell脚本中可以通过$PARAMETER获取传递的参数值。

  1. 使用命令行参数:可以在docker run命令中使用--entrypoint参数指定执行的命令,并将参数传递给该命令。例如:
代码语言:shell
复制

docker run --entrypoint "sh -c 'script.sh $PARAMETER'" image_name

代码语言:txt
复制

这样可以将参数传递给Shell脚本文件script.sh,并在脚本中通过$1获取传递的参数值。

  1. 使用Dockerfile:可以在Dockerfile中定义ENTRYPOINT或CMD指令,并将参数传递给Shell脚本。例如:
代码语言:dockerfile
复制

ENTRYPOINT "sh", "-c", "script.sh $PARAMETER"

代码语言:txt
复制

在Shell脚本中可以通过$1获取传递的参数值。

无论使用哪种方式,都可以将命令行参数传递到Shell脚本文件中进行处理。

关于Docker和容器化技术的更多信息,您可以参考腾讯云的容器服务产品:腾讯云容器服务

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2023学习日志

dockerDockerfile指令RUN指令RUN指令用于执行命令行命令,是最常用的指令之一RUN指令有两种格式:命令行格式 RUN 函数调用格式 RUN ["可执行文件", "...参数1 ", "参数2"]COPY指令COPY 指令从上下文命令中的文件/目录复制向的一层镜像内的、源路径可以是多个,甚至可以包含通配符目标路径可以是容器内的绝对路径,也可是相对于工作目录的相对路径...CMD类似于RUN指令,也有两种格式,推荐使用函数调用格式,因为命令行格式需要自动调用sh -c来执行命令行。...值得注意的是,docker中的应用只能前台运行,主进程退出后,容器将会退出ENTRYPOINT指令当指定了ENTRYPOINT指令后,CMD指令的内容将会作为参数传递给ENTRYPOINT指令,运行时参数也是如此...ENTRYPOINT指令还可用于在主进程执行前运行一段脚本,在脚本的最后执行运行时指定的CMD参数ENV指令ENV指令用于设置环境变量,后续指令及运行时应用均可使用此处定义的环境变量格式为: //

15420

构建以及运行Springboot Docker镜像时的变量传递

JAR_FILE=demo.jar . } # 构建测试环境的包 build test # 构建生产环境的包 build prod # 运行 docker run -d demo 使用运行时指定参数...构建时传递参数 如果我们开发模式是master模式,即所有的分发部署都是同一个分支master, 先将master部署test环境,没问题后直接发布prod。同样的镜像,只是运行时指定配置文件。...这就使得在打镜像的时候就指定配置文件。可以选择上文的暴力方式,文本替换。 也可以使用Docker参数。...大部分Dockerfile都是有docker-entrypoint.sh, 启动逻辑都放在一个脚本里,然后 ENTRYPOINT ["/docker-entrypoint.sh"] 这样,我们也可以在启动的时候传递参数脚本里...,脚本按照shell接受参数就可以了。

4.6K20
  • 命令行上的数据科学第二版 二、开始

    接下来让我们尝试一个不同的命令: $ head -n 3 movies.txt Matrix Star Wars Home Alone 这里我们三个命令行参数传递给head。第一个是选项。...实际上,每个命令行工具都是以下五种类型之一: 二进制的可执行文件 Shell 内置程序 解释脚本 Shell 函数 别名 [外链图片转存失败,源站可能有防盗链机制,建议图片保存下来直接上传(img-uRi0900m.../fac.py 5 120 在第四章中,我们详细讨论如何使用解释脚本创建可重用的命令行工具。 Shell 函数 在我们的例子中,Shell 函数是由zsh执行的函数。...它们提供了与脚本相似的功能,但是它们通常(但不一定)比脚本小,也更倾向于个人化。下面的命令定义了一个名为fac的函数,就像上面解释的 Python 脚本一样,它计算我们作为参数传递的整数的阶乘。...由于参数的原因,无法使用别名定义函数fac。尽管如此,别名可以让你节省大量的击键次数。像 Shell 函数一样,别名通常在文件.zshrc中定义。

    73920

    DockerFile就这么简单

    但是在第二种方式中,所有的命令和参数放在了一个列表中传入,此时就无法引用shell中的变量。...原因就是docker build时会把这些列表当做json来处理,所以要符合json字符串的规则。 RUN指令执行的命令的结果会被打包镜像当中,而且Dockerfile中后续的指令也可以使用。...但是我们如果使用ENTRYPOINT指令来指定执行的命令,那么在命令行中启动镜像时,在镜像名之后我们自己指定的命令将不会执行,而是作为参数传递给了ENTRYPOINT命令。...而且,在命令行中指定的命令,第一个参数并没有被传递给ENTRYPOINT,这是因为我们的docker默认认为第一个参数是要执行的命令,而其之后的才是真正的参数,参见如下所示,我们的“echo” 字符串并没有被输出出来...Shell形式可防止使用任何CMD或run 命令行参数覆盖掉我们的运行命令,但具有以下缺点:ENTRYPOINT将作为/bin/sh -c的子命令启动,该子命令不传递信号。

    1.6K20

    Dockerfile文件万字全面解析

    这样就可以把参数传递给entry point,也就是docker run -d会把-d传递给entry point。...shell格式会禁用掉CMD或者run命令行参数,但是有个缺点就是,ENTRYPOINT就不是作为/bin/sh -c的子命令来启动的了,也就是不能传递signals。...shell格式使用shell processing来替代shell environment variables,然后会忽略任何CMD或docker run命令行参数。...RUN使用v1.0.0而不是ARG传递的v2.0.1。这个行为有点类似于shell脚本,一个局部变量会覆盖通过参数传递的变量,或者从环境定义继承的变量。...在这个示例中,通过ENV指令,可以把命令行参数传递进来,然后持久化最终的image,实现了变量扩展。变量扩展只支持Dockerfile指令的一部分指令。

    2.7K20

    使用Java完成对Docker的指南入门,第2部分

    您可以使用-t指定图像标记 。这是您传递docker run的标记 。最后提供工作目录。...您可能希望构建具有不同配置文件的单个jar,然后在运行时选择正确的jar。让我们修改我们的图像以接受活动配置文件作为命令行参数。...简单地说, ENTRYPOINT 就是为启动容器而执行的程序,是 CMD 传递给该程序的参数。 默认ENTRYPOINT是/bin/sh -c。 到目前为止,您将Java命令数组传递shell。...现在,dockerfile正在脚本复制图像,然后定义为图像的ENTRYPOINT。 这里没有CMD。...构建此映像,然后在命令行使用dev将其作为最终参数运行 : $ docker run -d --name bootapp -v /var/log/app:/var/log/Application/

    82600

    你必须知道的Dockerfile

    /html/index.html #复制该脚本至镜像中,并修改其权限 ADD run.sh /run.sh RUN chmod 775 /run.sh #当启动容器时执行的脚本文件 CMD ["/run.sh...Runtime镜像时往往会加上以下RUN命令,弥补无法在默认镜像下使用Drawing相关接口的缺憾: FROM microsoft/dotnet:2.2.1-aspnetcore-runtime RUN.../start.sh /start.sh 2.9 ENTRYPOINT   启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖...,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指定指定的程序,例如: ENTRYPOINT ["/bin/bash", "-C", "/start.sh"] ENTRYPOINT /bin... 1:不健康的容器无法正常工作  2:保留不使用此退出代码 2.14 ARG   在构建镜像时,指定一些参数,例如: FROM centos:6 ARG user # ARG user=root USER

    74940

    使用 Dockerfile定制Java Web镜像

    一、前言 对使用 Docker 搭建 Java Web 运行环境(利用 commit 理解镜像构成  来源:黄勇 )的博文的归纳: 1、启动容器: docker run ...RUN 定义每一层该如何构建(不是在写 Shell 脚本) 每一个 RUN = 启动一个容器、执行命令、然后提交存储层文件变更 两行 RUN 命令的执行环境不同 格式: 1) shell 格式:...RUN #类似命令行输入 2) exec 格式: RUN ["可执行文件", "参数1", "参数2"]...ADD 可以是一个 URL, 如果是gzip , bzip2 以及 xz 的情况下,ADD 指令将会自动解压缩这个压缩文件 去 所有的文件复制均使用COPY 指令,仅在需要自动解压缩的场合使用...格式: ARG [=] 可以在构建命令docker build 中用 --build-arg = 来覆盖 #定义匿名卷 VOLUME 为了防止运行时用户忘记动态文件所保存目录挂载为卷

    1.6K40

    docker 实践手册

    是指定构建镜像的上下文路径(不要理解为当前路径),由于docker运行时是使用 c/s 模式,当在命令行执行 docker build,实际是执行远程调用,通知 docker 引擎完成实际任务,请求时会把上下文路径下的文件打包发给服务端...) 比如构建镜像中时常有 ADD, COPY, 这些命令指定文件拷贝镜像中,并不是拷贝执行 docker build 当前目录下的文件,而是从打包过去的文件寻找。 所以,如果这样写 ADD .....基于上下文这个概念,构建镜像时,应该保持指定路径下只包含需要的文件,避免打包无关文件(或添加 .dockerignore 文件),这也是通常新建个目录的原因 至于指定 dockerfile,使用参数 -...dockerfile 不同于shell,前后两行是不同执行环境,所以之后无法在 app 下找到 install.sh RUN cd /app RUN copy install.sh ....copy,语义明确,需要解压缩再使用add 就好; entrypoint 和 cmd 差别 entrypoint 和cmd 都和run一样,支持 shell 和exec格式, docker 不是虚拟机

    94000

    为了实现CICD,先来定制一个Docker镜像【实战精华篇】

    另外,为了减少构建层的数量,在编写Dockerfile文件时尽量多层的指令合并成一层执行,比如两个RUN命令可以通过&&将其合并成一条。...ENTRYPOINT指令 ENTRYPOINT指令,类似于CMD指令,但其不会被docker run命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT指令指定的程序。...这里使用ENTRYPOINT指令来执行jar -jar启动SpringBoot项目。 RUN指令 RUN指令虽然在实例中没用到,但也是非常常见的一个指令,于执行后面跟着的命令行命令,有以下两种格式。...shell 格式: RUN # 等同于,在终端操作的 shell 命令。...exec格式: RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN .

    54820

    15 分钟掌握 15 个 Docker 小窍门

    shell中安装软件,你要这样做: $ docker run -i -t ubuntu bash #登陆docker容器 root@db0c3967abf8:/# 然后输入下面的命令来安装文件: apt-get...还是在Dockerfile中指定安装文件吧,只要两个步骤: 1.在一个小巧的Dockerfile中,指定当前操作的镜像为FROM命令的参数 2.然后在Dockerfile中指定一些docker的命令,如...10.基于命令行的瘦客户端,使用UNIX Socket和Docker后台服务的REST接口进行通信 Docker默认是用UNIX socket通信的,一直到大概0.5、0.6的版本还是用端口来通信,但现在则改成...对我来说,Docker文件中,有4个是我非常喜欢阅读的: commands.go docker命令行接口,是对REST API的一个轻量级封装。...RUN命令会影响文件系统。因此,不要再Dockerfile中用启动后台程序,要把后台程序启动成前台进程。或者,像一些高手提议的那样,写一个启动脚本,在脚本中启动这些后台程序或进程。

    1.8K50

    「Spring」Boot Docker 认证指南(上)

    实际上,这意味着(例如)如果您docker run在本地使用图像,则可以使用CTRL-C. 如果命令行有点长,您可以COPY在运行之前将其提取到 shell 脚本中并放入映像中。...exec 表单不使用 shell 来启动进程,因此不应用选项。您可以通过入口点移动到脚本(如run.sh前面显示的示例)或在入口点显式创建 shell 来解决此问题。...-Ddebug anENTRYPOINT与显式 shell 一起使用(如前面的示例所做的那样)意味着您可以环境变量传递给 Java 命令。...如果您使用脚本作为入口点,那么您不需要${0}(/app/run.sh在前面的示例中)。以下列表显示了脚本文件中的正确命令:run.sh#!...使用(通过命令行参数、系统属性或其他方法)修复Spring Boot 配置文件的位置。

    1.4K20

    使用 Dockerfile 定制镜像

    如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。...使用 Go 语言 开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。 RUN 执行命令 RUN 指令是用来执行命令行命令的。...由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。其格式有两种: shell 格式:RUN ,就像直接在命令行中输入的命令一样。...既然 RUN 就像 Shell 脚本一样可以执行命令,那么我们是否就可以像 Shell 脚本一样把每个命令对应一个 RUN 呢?...因此,这里没有使用很多个 RUN 对一一对应不同的命令,而是仅仅使用一个 RUN 指令,并使用 && 各个所需命令串联起来。将之前的 7 层,简化为了 1 层。

    1.2K70

    DockerFile

    如果不知道的话:DockerFile 是用来构建镜像的一个脚本文件。 此前我构建镜像都是使用 docker file,简单又明确。...Dockerfile的优点: 能够自由灵活的与宿主机联系,比如,某些配置文件在宿主机验证并使用过后很好用,那么,可以文件copy镜像中,(这个动作是写在dockerfile里),add 远程主机的配置文件镜像中...RUN:用于执行后面跟着的命令行命令。有以下俩种格式: shell 格式: RUN # 等同于,在终端操作的 shell 命令。...(哦,所以如果我要构建 redis 集群节点的镜像可以用这个) ENTRYPOINT 类似于 CMD 指令,但其不会被 docker run命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给...但是, 如果运行 docker run使用了 --entrypoint 选项,覆盖 ENTRYPOINT 指令指定的程序。

    71910

    Docker速学(二) Dockerfile和数据卷

    关于 Dockerfile,下面我们再传递几个重要的观点: Dockerfile 是 Docker 运维开发工作的关键 Dockerfile 文件主要用于编写应用的安装过程 应用的初始化过程可以在 Dockerfile...中引入,然后在独立的脚本中编写 Dockerfile 必须构建成镜像后再供用户使用,直接基于 Dockerfile 运行容器可能会由于网络问题导致无法达成预期目的 指令不仅仅用于设计 Docker 镜像...: /bin/ping localhost CMD 与 ENTRYPOINT 组合使用:组合使用的时候 CMD 作为 ENTRYPOINT 的一个参数 组合使用 ENTRYPOINT 和 CMD 命令式...但用户在实际使用 Docker 的过程中,一定有持久保存数据(包含配置文件)的需求,那么 Docker 是如何解决这个问题的呢?...使用卷 下面是一个通过 -v 使用卷的范例: docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ node:12-alpine

    86600
    领券