首页
学习
活动
专区
工具
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.3K20

    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

    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命令。

    54130

    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容器的部署

    22710

    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

    何在 Mac 上愉快的使用 Docker

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

    4K30

    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

    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

    如何写出安全的、基本功能完善的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。它会阻止你做一堆适得其反的事情。

    55930

    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

    一、环境准备

    -sSL https://get.daocloud.io/docker | sh 安装完成后,运行以下脚本将当前用户添加到Docker的组 sudo usermod -aG docker studyzy...usr/local/bin/docker-compose 二、部署Fabric 1.0 Beta 2.1下载官方自动部署脚本 我们首先创建一个文件夹,用于存放自动部署的脚本。...          x86_64-1.0.0-beta   e549e8c53c2e        15 hours ago        238 MB 2.2启动Fabric实例 在前面下载的官方提供的自动部署脚本...3.1在CLI测试Example02 首先我们需要登录到CLI这个容器,才能执行Fabric的CLI命令。...docker exec -it cli bash 如果成功进入,我们会切换到该容器的root用户下,得到如下的命令行目录: root@12f2eb6d9fa6:/opt/gopath/src/github.com

    34520

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

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

    2K50

    二维图像生成 3D 场景:nerfstudio 帮你简化流程 | 开源日报 No.164

    该项目提供了以下主要功能、关键特性和核心优势: 完整的 IP/TCP 重组和各种协议分析器 支持 HTTP、TLS、DNS、SSH 等多种协议,且还有更多待添加 基于机器学习的流量分类(正在开发) 全面支持...它包括了基础模型的新架构研究,稳定性、泛能力、功能性和效率,并提供了一些特殊的模型架构。...DevOps Bash 脚本和高级 Bash 环境的项目。...包含许多流行的 DevOps 技术脚本 AWS、GCP、Kubernetes、Docker 等 提供了高级配置文件,适用于常见工具 Git、vim 和 PostgreSQL psql 集成了大多数主要持续集成产品的...CI 配置,并提供标准检查框架以运行所有 CI 构建 自动处理身份验证信息,可快速查询热门 API 的脚本 安装最佳系统软件包,涵盖 AWS CLI、Azure CLI

    37810
    领券