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

如何在Docker CLI中运行参数化bash脚本

在Docker CLI中运行参数化bash脚本可以通过以下步骤实现:

基础概念

Docker CLI(命令行界面)允许用户与Docker守护进程进行交互,执行各种容器和镜像操作。参数化bash脚本是指在脚本中使用变量来接收外部传入的参数,从而实现灵活的脚本执行。

相关优势

  1. 灵活性:参数化脚本可以根据不同的输入参数执行不同的操作。
  2. 可重用性:同一个脚本可以通过不同的参数在多种场景下使用。
  3. 简化维护:减少重复代码,便于维护和更新。

类型

参数化bash脚本主要通过以下方式实现:

  • 使用$1, $2, $3等变量接收命令行参数。
  • 使用getoptsargparse等工具进行更复杂的参数解析。

应用场景

  • 自动化测试:根据不同的测试需求运行不同的测试用例。
  • 部署脚本:根据不同的环境变量部署不同的配置。
  • 数据处理:根据输入参数处理不同的数据集。

示例代码

假设我们有一个简单的bash脚本script.sh,它接收一个参数并输出该参数:

代码语言:txt
复制
#!/bin/bash
echo "Hello, $1!"

将脚本添加到Docker镜像中,并在Docker CLI中运行:

  1. 创建Dockerfile
  2. 创建Dockerfile
  3. 构建Docker镜像
  4. 构建Docker镜像
  5. 运行Docker容器并传递参数
  6. 运行Docker容器并传递参数

解决常见问题

如果在运行过程中遇到问题,可以检查以下几点:

  1. 脚本权限:确保脚本具有执行权限。
  2. 脚本权限:确保脚本具有执行权限。
  3. 参数传递:确保在docker run命令中正确传递参数。
  4. 参数传递:确保在docker run命令中正确传递参数。
  5. 日志查看:通过docker logs命令查看容器日志,定位问题。
  6. 日志查看:通过docker logs命令查看容器日志,定位问题。

参考链接

通过以上步骤,你可以在Docker CLI中成功运行参数化bash脚本,并根据需要进行灵活的参数传递和操作。

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

相关·内容

CI中的Cake

在上一篇C#Make自动化构建-简介中,简单的介绍了下Cake的脚本如何编写以及通过Powershell在本地运行Cake脚本。本篇在此基础上,介绍下如何在CI环境中使用Cake。 1....为了方便输入,我把ShowDescription改成了Help(仅更改了build.ps1中传递参数的名称)。 ?...Cake运行环境搭配 Cake脚本本身的跨平台(windows,linux,docker等)是借助于上面提到的cake.exe或cake.coreclr来实现的。...到时候就可以统一借助dotnet cli来安装cake.coreclr了。 3. 在不同的CI环境中执行相同的自动构建 cake的目的在于一次编写,可以运行在不同的构建环境和构建工具中。...同时可以把构建脚本纳入到源代码管理中,而不是编写在某一特定的ci/cd工具中。

1.2K70
  • Docker环境下秒建Redis集群,连SpringBoot也整上了!

    本文主要讲述Redis集群环境的搭建步骤以及如何在SpringBoot中整合使用Redis集群。...- redis.sh 从docker-compose.yml文件中我们可以看到,我们的Redis容器分别运行在6391~6396这6个端口之上, 将容器中的/config配置目录映射到了宿主机的.../mydata/redis-cluster/config目录,同时还以redis.sh脚本作为该容器的启动脚本; redis.sh脚本的作用是根据environment环境变量中的PORT属性,以指定配置文件来启动...此时进入其中一个Redis容器之中,初始化Redis集群; # 进入Redis容器 docker exec -it redis-master1 /bin/bash # 初始化Redis集群命令 redis-cli...创建成功后我们可以使用redis-cli命令连接到其中一个Redis服务; # 单机模式启动 redis-cli -h 127.0.0.1 -p 6391 # 集群模式启动 redis-cli -c -

    1.4K20

    SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    如何在Docker安装GitLab详解 如何在Docker创建NetWork网络详解 如何在Docker安装Registry私服详解 如何在Docker安装Jenkins详解 见附录 特别说明 ?.../usr/bin/env bash # 动态变量的【等号】不能有空格和tab键置位,否则获取不了值,而且在shell脚本代码里面不支持空格格式化,支持tab置位格式化。...SSH Publishers shell脚本#!/bin/bash表示告诉终端使用bash解析器进行执行,而且只有第一行bash才有效。 #!.../bin/bash # 创建目录 mkdir -p ${serverPath} # 切换目录 cd ${serverPath} # 运行脚本 sh build.sh $server ${appName...docker_server1 Shell脚本#!/bin/bash表示告诉终端使用bash解析器进行执行,而且只有第一行bash才有效。 #!

    9.4K40

    Docker 稳定性保障:Ubuntu 环境版本锁定方案

    很多开发者可能都遇到过这样的困扰:明明之前运行得好好的容器,在更新 Docker 版本后突然就出现了各种奇怪的问题。有时是配置文件不兼容,有时是命令参数变化,有时甚至会影响到整个应用的稳定性。...正是基于这些原因,我决定写这篇文章,详细介绍如何在 Ubuntu 环境中有效地管理和固定 Docker 版本,帮助你避免版本更新带来的各种意外问题。...,当我们使用 bash docker-deps.sh 运行这个脚本后,它会先按照每个包分类显示其依赖项,然后给出一个去重后的完整依赖列表。...在改进脚本之前,回忆下之前的文章中,我们的 Docker 安装命令是这样的(一共四个依赖): sudo apt update && sudo apt install -y docker-ce docker-ce-cli...进行软件包版本锁定 为了让系统能够自动对列表中的程序进行版本锁定,我们可以用下面这个命令: # echo $(bash docker-deps.sh) | tr ' ' '\n' | xargs -I

    7810

    SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    /usr/bin/env bash # 动态变量的【等号】不能有空格和tab键置位,否则获取不了值,而且在shell脚本代码里面不支持空格格式化,支持tab置位格式化。.../bin/bash # 创建目录 mkdir -p ${serverPath} # 切换目录 cd ${serverPath} # 运行脚本 sh build.sh $server ${appName...} ${version} ${port} ${env} ${serverPath} 5.5 构建与编译部署项目 截图的构建参数都是在参数化构建过程配置的参数 5.6 构建&运行&&部署结果 构建过程...docker_server1 Shell脚本#!/bin/bash表示告诉终端使用bash解析器进行执行,而且只有第一行bash才有效。 #!...env} ${serverPath} 6.5 构建与编译部署项目 截图的构建参数都是在参数化构建过程配置的参数 6.6 构建&运行&部署结果 构建过程 部署结果 7、总结&建议&学习 7.1总结与建议

    7.9K20

    软件测试|Docker exec命令详细使用指南

    Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们调试、排查问题或进行其他操作。这就是Docker exec命令发挥作用的时候。...docker exec docker exec命令用于在运行中的Docker容器中执行命令。它允许我们与容器内的应用程序进行交互,并在容器中运行命令行工具、脚本或其他操作。...打开,和 -t 配合 -t,进入容器的 CLI 模式 -e,设置环境变量 –env-file,读入环境变量文件 -w,需要执行命令的目录 -u,指定访问容器的用户名 注:更多参数可以运行docker...如下图: 执行容器内的指定脚本 docker exec -it tomcat_muller start.sh 这个命令将运行tomcat_muller容器中的start.sh脚本。...进入容器的 CLI 模式 docker exec -it tomcat_muller bash 这个命令将进入tomcat_muller的终端,我们可以在这里运行shell命令。

    55630

    Docker 稳定性保障:Ubuntu 环境版本锁定方案

    很多开发者可能都遇到过这样的困扰:明明之前运行得好好的容器,在更新 Docker 版本后突然就出现了各种奇怪的问题。有时是配置文件不兼容,有时是命令参数变化,有时甚至会影响到整个应用的稳定性。...正是基于这些原因,我决定写这篇文章,详细介绍如何在 Ubuntu 环境中有效地管理和固定 Docker 版本,帮助你避免版本更新带来的各种意外问题。...,当我们使用 bash docker-deps.sh 运行这个脚本后,它会先按照每个包分类显示其依赖项,然后给出一个去重后的完整依赖列表。...在改进脚本之前,回忆下之前的文章中,我们的 Docker 安装命令是这样的(一共四个依赖):sudo apt update && sudo apt install -y docker-ce docker-ce-cli...进行软件包版本锁定为了让系统能够自动对列表中的程序进行版本锁定,我们可以用下面这个命令:# echo $(bash docker-deps.sh) | tr ' ' '\n' | xargs -I {}

    6810

    Docker 安装 Redis 并外置数据文件

    查看运行情况 docker ps 进入容器内部,还可以通过 redis-cli 连接测试使用 redis 服务。...docker exec -it redis-test /bin/bash redis-cli 到此docker安装redis已经完成啦。...# bind 127.0.0.1 protected-mode no 创建并启动容器 docker run运行一个redis的容器,这里的几个参数意义表示如下: -d 表示容器在后台运行,这样可以使容器在后台持续运行而不占用终端...该参数后data映射是将主机上的数据目录 ~/i/apps/redis/data 映射到容器内部的 /data 目录。这样可以将 Redis 数据持久化到主机文件系统,即数据在容器销毁后仍可以保留。...docker exec -it myredis /bin/bash redis-cli set testkey 2 get testkey 到此已经完成整个redis容器的部署

    23910

    Chaincode调试 —— 开发者模式和单元测试

    是运行于容器中的,这导致我们很难获取在代码中打印的日志。...orderer节点,1个peer节点,1个chaincode容器(负责运行我们要测试的链码),1个cli容器(负责发送请求来测试链码)。...有两点需要注意的: 在cli容器的command项中可以看见,启动后会自动执行当前目录下的script.sh脚本,该脚本会自动创建名为myc的通道,并且将节点加入。...终端三:在cli中测试链码 进入cli容器: docker exec -it cli bash 安装和实例化链码(实例化设置了a的初始值10): peer chaincode install -p chaincodedev...总结 使用开发者 (dev) 模式进行测试: 好处是网络规模简单,可以在终端中直接看到链码打印的日志,使用cli命令行容器测试也比较方便(可以写成测试脚本映射到cli容器中自动执行)。

    1.6K63

    Docker最全教程——数据库容器化(十)

    数据库容器化 什么是数据库? 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。...当然,大家也可以通过命令行查看: docker ps -a ? 如果“状态(STATUS)”列显示“UP”,则 SQL Server 将在容器中运行,并侦听“端口”列中指定的端口。...Bash Shell运行 如果是Linux系统,我们可以通过Bash Shell执行以下命令: sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456abcD...,并查看结果 · 生成数据库对象的 T-SQL 脚本 · 查看和编辑数据库中的数据 · 以可视方式设计 T-SQL 查询和数据库对象,如视图、 表和存储的过程 下载地址: https://docs.microsoft.com...使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell PowerShell: docker exec -it mySqlServer "bash" ?

    2.9K20

    如何在 Mac 上愉快的使用 Docker

    一、目标任务首先要明确的是, 作为了一个每天在 Linux Server 上 rm -rf 的人来说, 如果想在 Mac 上使用 Docker, 最舒服的也是兼容所有 docker cli 命令行操作即可...; 至于图形化的界面完全不需要, 我们并不指望图形化界面能比敲命令快到哪里去, 也不指望图形化界面变为主力; 所以本篇文章的核心目标:在 Mac 上使用完整的 docker cli 命令, 包括对基本的...start 子命令用于启动一个虚拟机, 子命令接受一个参数, 这个参数形式不同会产生不同的行为:如果参数为一个文件路径, 则假定文件为一个 lima 虚拟机的 yaml 配置, 读取并启动如果参数是单纯字符串..., 首先尝试从已存在的虚拟机中查找名字相同的, 找到则立即启动如果参数是单纯字符串, 且未找到已存在同名的虚拟机, 则尝试通过内置模版来创建一个新的虚拟机以上面我自己定义的 docker 配置文件为例,...lima 虚拟机为 aarch64 的情况下仍然可以使用.除了这种 “速度较快” 的跨架构运行方式, lima 还支持直接在 VM 中定义架构, 这样在 qemu 启动时则会直接从 VM 系统层模拟目标架构

    4.5K30

    如何写出安全的、基本功能完善的Bash脚本

    required parameter: param"   [[ ${#args[@]} -eq 0 ]] && die "Missing script arguments"   return 0 } 如果在脚本中参数化有意义的话...而且,即使某些东西需要硬编码,通常在比Bash脚本更高的级别上有更好的位置。 CLI参数有三种主要类型:标志、命名参数和位置参数。parse_params()函数支持所有这些参数。...所以用户的期望和脚本行为可能会有很大的不同。最好是在坏事发生之前完全阻止处决。 在Bash中解析参数有两种选择。是一个接一个的。有人赞成和反对使用它们。...显然,它不能在缺少Bash的环境中工作,比如alpinellinux。 Further reading 在用Bash或其他更好的语言创建CLI脚本时,有一些通用规则。...毕竟,我尽量使Bash脚本尽可能小(而且很少使用)。 编写Bash脚本时,请使用支持ShellCheck linter的IDE,如JetBrains IDEs。它会阻止你做一堆适得其反的事情。

    57230

    Fabric示例——first network

    // Ubuntu中是.profile 添加:export PATH=$HOME/hyperledger/fabric-samples/bin:$PATH 脚本自动运行 1.生成网络配置信息.../byfn.sh -m down 手动分步运行 为了更好理解fabric网络创建的具体过程,可以手动一步步完成上述脚本中包含的所有操作。...docker-compose-cli.yaml文件,注释掉cli容器部分的一行配置: command: /bin/bash -c '..../scripts/script.sh ${CHANNEL_NAME} ${DELAY}; sleep $TIMEOUT' 因为该行命令会使cli容器在运行的时候自动执行script.sh脚本,自动完成所有操作...首先进入cli容器中,之后的所有命令都是在该容器内部进行的: docker exec -it cli bash 执行以下命令创建通道,其中--cafile参数制定了orderer节点的TLS根CA证书的路径

    2K30

    .NET平台系列28:在 macOS 上安装 .NET Core.NET5.NET6

    系列目录 【已更新最新开发文章,点击查看详细】   在本文中,你将了解如何在 macOS 上安装 .NET。 .NET 由运行时和 SDK 组成。...运行时信息 运行时用于运行使用 .NET 创建的应用。 应用作者发布应用时,可以在其应用中包含运行时。 如果作者未包含运行时,则由用户安装运行时。...若要提取运行时并使 .NET CLI 命令可用于终端,请先下载 .NET 二进制版本。 然后,打开终端并从保存文件的目录运行以下命令。 根据下载内容,存档文件名称可能不同。...使用 Bash 自动化安装 dotnet-install 脚本用于运行时的自动化和非管理员安装。 可从 dotnet-install 脚本引用页下载该脚本。....NET 可在 Docker 容器中运行。

    5.6K10

    Docker最全教程——数据库容器化(十一)

    // 数据库容器化 // 什么是数据库? 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。...当然,大家也可以通过命令行查看: docker ps -a ? 如果“状态(STATUS)”列显示“UP”,则 SQL Server 将在容器中运行,并侦听“端口”列中指定的端口。...Bash Shell运行 如果是Linux系统,我们可以通过Bash Shell执行以下命令: sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456abcD...,并查看结果 · 生成数据库对象的 T-SQL 脚本 · 查看和编辑数据库中的数据 · 以可视方式设计 T-SQL 查询和数据库对象,如视图、 表和存储的过程 下载地址: https://docs.microsoft.com...使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell PowerShell: docker exec -it mySqlServer "bash" ?

    2.2K40

    用 JS 编写自动化脚本,而不是 bash!

    : 我在日常的工作中也体会到,大家仿佛有共识一般默认写自动化构建脚本时要去用 bash,希望这篇文章可以带给大伙一些不一样的思考,也许 JavaScript 来写会更好?...当然从这个角度来看 bash 也差不多,但 JS 在这里起码并不比它差。 在 JS 优先的团队中使用 JS 进行自动化脚本的编写,是最合乎逻辑的选择。...runtime 大概率已经安装了 你的 bash 脚本即使成功运行了,麻烦也没有结束,因为它通常会在另一台机器上失败(说你呢,Alpine Docker 容器……)。...另外一个好处是,由于许多工具的 CLI 位于单独的软件包中(如 @babel/CLI),如果直接使用 node API,可以跳过安装,从而节省一点 npm i 时间。...体面的进程间通信 node 作为自动化运行时的一个很棒的方面是它的 IPC 能力。有时候你更喜欢通过 CLI 而不是 node API 使用其他工具。

    2.1K50
    领券