我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell 命令启动Docker Container的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell 命令启动Docker Container的实现

linux虚拟机重启后,都要手动启动多个docker Container,着实麻烦,使用Shell命令可以减去这个麻烦。

创建文件,添加可执行权限

touch startcontiner.sh
chomd +x startcontainer.sh

编写startcontainer.sh

#!/bin/sh             
#chkconfig: 35 90 80       
#description: start docker container
containerNames="mysql redis rabbitmq mongo zookeeper"
# 根据名称启动Docker Contianers
function startContainer(){
  sudo docker start $1
}
# 遍历containerNames
for containerName in ${containerNames}
do
    echo "Container ${containerName} start"
    startContainer ${containerName}
done

启动并测试

./startcontainer.sh

PS:docker 批量启动项目 shell 脚本

Dockerfile

FROM java:8
VOLUME /tmp
COPY blockchain-core-0.1.jar /project/app.jar
CMD java -jar /project/app.jar

文件目录

docker/
├── logs
│  └── logs
│    ├── block-chain-core
│    │  ├── 2018-11-23
│    │  │  ├── access.0.log
│    │  │  ├── debug.0.log
│    │  │  ├── detail.0.log
│    │  │  ├── error.0.log
│    │  │  ├── execute.0.log
│    │  │  └── info.0.log
│    │  └── 2018-11-26
│    │    ├── access.0.log
│    │    ├── debug.0.log
│    │    ├── detail.0.log
│    │    ├── error.0.log
│    │    ├── execute.0.log
│    │    └── info.0.log
│    └── gateway-zuul
│      ├── 2018-11-23
│      │  ├── access.0.log
│      │  ├── debug.0.log
│      │  ├── detail.0.log
│      │  ├── error.0.log
│      │  ├── execute.0.log
│      │  └── info.0.log
│      └── 2018-11-26
│        ├── access.0.log
│        ├── debug.0.log
│        ├── detail.0.log
│        ├── error.0.log
│        ├── execute.0.log
│        └── info.0.log
├── projects
│  ├── blockchain-core
│  │  ├── app.jar
│  │  ├── blockchain-core-0.1.jar
│  │  └── Dockerfile
│  ├── eureka-server
│  │  ├── Dockerfile
│  │  └── eureka-server-1.0.jar
│  └── gateway-zuul
│    ├── app.jar
│    ├── Dockerfile
│    └── gateway-zuul-0.0.1.jar
├── run

脚本

#!/bin/bash

#serverList=("eureka-server" "gateway-zuul" "blockchain-core" "blockchain-order");
#------------配置 start-------------
# 项目目录
projectsDir="/opt/docker/projects"
# 日志输出目录
logsDir="/opt/docker/logs"
#------------配置 end-------------

serverList=`ls ${projectsDir}`ObVkYdtU;
commond=$1;
serverName=$2;
port=$3;

# 启动服务方法 第一个参数为 服务名,第二个参数为 端口
function startServer(){
 echo "--------------启动项目开始:$1 $2"
 serverCount=`docker ps -f status=exited | grep $1 |wc -l`;
  # 判断是否已经启动过,且端口为默认端口
    if [[ ${serverCount} > 0 && $2 == "" ]];then
        echo "docker start 启动项目:$1"
        docker start $1
    else
      # 判断是否生成了镜像
      imageCount=`docker images | grep $1 | wc -l`;

      if [[ ${imageCount} > 0 ]];then
         echo "docker run 启动项目: $1"
         # 复制项目jar包为 app.jar
         currProjectDir=$projectsDir/$1
         cd $currProjectDir
         cp `ls | grep $1` "app.jar"
         # 执行命令
         if [[ $2 == "" ]];then
          echo "docker run -d -v ${logsDir}:/opt -v $currProjectDir:/project --name $1 $1 "
          docker run -d -v ${logsDir}:/opt -v $currProjectDir:/project --name $1 $1
          else
           echo "docker run -d -p $2:$2 -v ${logsDir}:/opt -v ${currProjectDir}:/project --name $1_$2 $1 java -jar /project/app.jar --server.port=$2"
           docker rObVkYdtUun -d -p $2:$2 -v ${logsDir}:/opt -v ${currProjectDir}:/project --name $1_$2 $1 java -jar /project/app.jar --server.port=$2
          fi
        else
         echo "生成 $1 项目镜像:$1"
         
          cd "${projectsDir}/$1"
         
         docker build -t $1 .

         # 再次调用该方法
         startServer $1 $2
       fi
    fi
}

# 根据项ObVkYdtU目名获取端口号 参数为项目名
function getPort(){
 tempProjectDirName=`ls $projectsDir | grep $1`
 OLD_IFS="$IFS";
  IFS="_"
  arr=($tempProjectDirName)
  IFS="$OLD_IFS"
  echo ${arr[1]}
 return ${arr[1]}
}


if [[ ${commond} == "-help" ]];then
 echo " "
 echo "参数1:执行命令"
 echo "  1. start 启动"
 echo "  2. stop  停止"
 echo "  3. restart 重启"
 echo "参数2:服务名"
 echo "  1.eureka-server  服务注册中心"
 echo "  2.gateway-zuul  网关服"
 echo "  3.blockchain-core 系统服务服"
 echo "  4.blockchain-order 订单服"
 echo "  5.all   全部"
 exit;
elif [[ ${commond} == "" || ${serverName} == "" ]];then
 echo "错误:请传入启动参数!详情:-help"
    exit;
fi

# 单个项目操作
if [[ ${serverName} != "all" && ${commond} == "start" ]];then
 
 startServer ${serverName} ${port}
 
elif [[  ${serverName} != "all" && ${commond} != "start" ]];then
 echo "开始${commond}容器中的项目:${serverName}"
 docker ${commond} `docker ps | grep ${serverName} | awk -F"    " '{print $1 }'`
fi

# 全部项目操作
# IFS=";\n"
if [[ ${serverName} == "all" && ${commond} == "start" ]];then
 for server in ${serverList[@]}
 do
  startServer ${server}
 
 done
elif [[ ${serverName} == "all" && ${commond} != "start" ]]; then
 for server in ${serverList[@]}
 do
  echo "开始 ${commond} 容器中的项目:${server}"
  docker ${commond} `docker ps | grep ${serverName} | awk -F"    " '{print $1 }'`
 
 done
fi

echo "执行完毕!"

到此这篇关于Shell 命令启动Docker Container的实现的文章就介绍到这了,更多相关Shell启动Docker Container内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell 命令启动Docker Container的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell 命令启动Docker Container的实现

linux虚拟机重启后,都要手动启动多个docker Container,着实麻烦,使用Shell命令可以减去这个麻烦。 创建文件,添加可执行权限 touch startcontiner.sh chomd +x startcontainer
2022-06-05

怎么用Shell命令启动Docker Container

这篇文章主要介绍“怎么用Shell命令启动Docker Container”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Shell命令启动Docker Container”文章能帮助大家解决问
2023-06-29

docker如何获取容器的启动命令

这篇文章主要介绍docker如何获取容器的启动命令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何获取容器的启动命令容器早已创建好,如何得知它的启动参数(数据挂载到哪)#假设通过如下命令启动了一个容器docker
2023-06-14

Impala-shell命令参数的实现

不多说,直接上干货!1. impala-shell外部命令 所谓的外部命令指的是不需要进入到impala-shell交互命令行当中即可执行的命令参数。impala-shell后面执行的时候可以带很多参数。你可以在启动 impala-shel
2022-06-04

Java执行shell命令的实现

本文主要介绍了Java执行shell命令的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-12

Windows实现通过cmd命令行启动mysql

目录一、我原来的启动方式二、First Try三、Second Try四、Third Try五、登录并查询数据总结一、我原来的启动方式某天打开电脑启动mysql的时候,Ctrl Shift + Esc当打开以后呢,我陷入了短暂的思考中,作
Windows实现通过cmd命令行启动mysql
2024-10-17

python运行shell命令subprocess的实现

本文主要介绍了python运行shell命令subprocess的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-19

Android中使用am命令实现在命令行启动程序详解

在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.代码如下: usage: am [subcommand] [options] start an Activity: am start [
2022-06-06

怎么使用expect命令实现Shell自动化交互

这篇文章将为大家详细讲解有关怎么使用expect命令实现Shell自动化交互,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景linux脚本中有很多场景是进行远程操作的,例如远程登录ssh、远程复制scp
2023-06-09

win10命令行修复启动服务怎么实现

要修复启动服务,您可以按照以下步骤在Windows 10命令行中进行操作:打开命令提示符(CMD)或Windows PowerShell。您可以通过按下Win + R键,然后输入"cmd"或"powershell"来打开它们。以管理员身份运
win10命令行修复启动服务怎么实现
2024-02-29

Shell实现的Oracle启动脚本分享

Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start | stop | restart
2022-06-04

docker如何查看容器启动命令(已运行的容器)

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,下面这篇文章主要给大家介绍了关于docker如何查看容器启动命令(已运行的容器)的相关资料,需要的朋友可以参考下
2023-02-22

docker-compose启动redis集群的实现步骤

目录1. 伪集群安装持久化存储启动集群集群初始化2. 测试读写测试key所在节点多机集群见我的另一篇文档《docker-compose启动Redis多机集群(6台服务器3主3从)》,此处是一个用于学习的伪集群。1. 伪集群安装docke
2022-07-13

怎么用Shell命令关闭不需要的随机启动服务

本篇内容介绍了“怎么用Shell命令关闭不需要的随机启动服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux可以简单的通过一条she
2023-06-09

一句话Shell命令关闭不需要的随机启动服务

Linux可以简单的通过一条shell命令来关闭其他不需要的开机启动服务,只保留计划任务,网络,ssh和日志,看shell命令:chkconfig --list | grep 3:on | grep -v "crond|network|ss
2022-06-04

shell脚本读取命令行参数的实现

目录前提选项与参数:一.手工处理方式(已验证)二.getopts/getopt三.总结前提在编写shell程序时经常需要处理命令行参数 选项与参数:如下命令行:./test.sh -f config.conf -v --prefix=/ho
2022-06-04

编程热搜

目录