怎么用Shell命令启动Docker Container
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"怎么用Shell命令启动Docker Container"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用Shell命令启动Docker
千家信息网最后更新 2025年11月07日怎么用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安全错误
数据库的锁怎样保障安全
软件开发生命周期案例百度云
银行软件开发岗考题
软件开发好公司
法庭网络安全主题党日活动
企业网络安全峰会
ie服务器错误是为什么
查询金融信息基础数据库
数据库归档批处理
移动网络安全 产业
好的服务器租用多少钱
普陀区高科技软件开发设计规范
数据库第五版第四章
网络中心服务器地址
系统软件与服务器的通信
学校网络安全管理制度文本
blender软件开发时间
用友系统 国产数据库
软件开发系统培训计划
太原服务器内存回收
网络资源要利用网络安全要谨记
浙江服务器哪家好
大二数据库实验报告心得体会
hp服务器安装系统硬盘不识别
直播网络技术发展前景
网络安全系统知识
中国移动心服务器
网络安全工作的本质
郑州网络安全科技
2u服务器可以用固态硬盘吗
vue 背景图放服务器上不显示