怎么用Shell命令启动Docker Container
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"怎么用Shell命令启动Docker Container"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用Shell命令启动Docker
千家信息网最后更新 2025年02月23日怎么用Shell命令启动Docker Container
这篇文章主要介绍"怎么用Shell命令启动Docker Container"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用Shell命令启动Docker Container"文章能帮助大家解决问题。
Linux虚拟机重启后,都要手动启动多个Docker Container,着实麻烦,使用Shell命令可以减去这个麻烦。
创建文件,添加可执行权限
touch startcontiner.shchomd +x startcontainer.sh
编写startcontainer.sh
#!/bin/sh #chkconfig: 35 90 80 #description: start docker containercontainerNames="mysql redis rabbitmq mongo zookeeper"# 根据名称启动Docker Contianersfunction startContainer(){ sudo docker start $1}# 遍历containerNamesfor 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.jarCMD 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}`;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 run -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}# 根据项目名获取端口号 参数为项目名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} doneelif [[ ${serverName} == "all" && ${commond} != "start" ]]; then for server in ${serverList[@]} do echo "开始 ${commond} 容器中的项目:${server}" docker ${commond} `docker ps | grep ${serverName} | awk -F" " '{print $1 }'` donefiecho "执行完毕!"
关于"怎么用Shell命令启动Docker Container"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
项目
命令
参数
服务
方法
目录
知识
端口
容器
文件
脚本
行业
镜像
麻烦
生成
配置
不同
实用
内容
再次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
信用卡智还养卡软件开发公司
科技发展互联网
中国水数据库
网络安全保护知识产权的知识
什么是帮助网络安全罪
南通阿里巴巴网络技术
黄浦区口碑好的软件开发供应商
阿里云服务器加aws代理
信息网络安全管理系统软件
战神引擎装备数据库在哪
莱西市政务网络安全防护项目
高中生学软件开发好就业吗
网络安全可以介入物理空间
加强网络安全问题标语
银川互联网材料科技园项目
网络安全的疑问以及问题
红网联盟网络安全
服务器管理口访问
高中网络技术考试答案
青岛java软件开发流程
java 兼容多种数据库
关闭数据库实例和所有的连接
高级数据库技术汤庸PDF
网络安全金帽子意义
数据库语句fetch的用法
服务器工作室管理制度
数据库实体类的创建
c 新项目类型操作数据库
软件开发企业核定征收政策
思迅商云服务器数据库设置