欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell 命令啟動Docker Container的實現(xiàn)

 更新時間:2022年02月25日 11:14:14   作者:vio_dzyls  
本文主要介紹了Shell 命令啟動Docker Container的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Linux虛擬機重啟后,都要手動啟動多個Docker Container,著實麻煩,使用Shell命令可以減去這個麻煩。

創(chuàng)建文件,添加可執(zhí)行權(quán)限

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"
# 根據(jù)名稱啟動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}`;
commond=$1;
serverName=$2;
port=$3;

# 啟動服務方法 第一個參數(shù)為 服務名,第二個參數(shù)為 端口
function startServer(){
?? ?echo "--------------啟動項目開始:$1 ?$2"
?? ?serverCount=`docker ps -f status=exited | grep $1 |wc -l`;
?? ??? ?# 判斷是否已經(jīng)啟動過,且端口為默認端口
? ? ? ? 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"
?? ? ? ? ? ? ? ? ? ?# 執(zhí)行命令
?? ? ? ? ? ? ? ? ? ?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 .

?? ? ? ? ? ? ? ? ?? ?# 再次調(diào)用該方法
?? ? ? ? ? ? ? ? ?? ?startServer $1 $2
?? ? ? ? ? ? ? ?fi
? ? ? ? fi
}

# 根據(jù)項目名獲取端口號 參數(shù)為項目名
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 "參數(shù)1:執(zhí)行命令"
?? ?echo "?? ??? ?1. start?? ?啟動"
?? ?echo "?? ??? ?2. stop?? ??? ?停止"
?? ?echo "?? ??? ?3. restart?? ?重啟"
?? ?echo "參數(shù)2:服務名"
?? ?echo "?? ??? ?1.eureka-server?? ??? ?服務注冊中心"
?? ?echo "?? ??? ?2.gateway-zuul?? ??? ?網(wǎng)關(guān)服"
?? ?echo "?? ??? ?3.blockchain-core?? ?系統(tǒng)服務服"
?? ?echo "?? ??? ?4.blockchain-order?? ?訂單服"
?? ?echo "?? ??? ?5.all?? ??? ??? ?全部"
?? ?exit;
elif [[ ${commond} == "" || ${serverName} == "" ]];then?
?? ?echo "錯誤:請傳入啟動參數(shù)!詳情:-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 "執(zhí)行完畢!"

到此這篇關(guān)于Shell 命令啟動Docker Container的實現(xiàn)的文章就介紹到這了,更多相關(guān)Shell啟動Docker Container內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jar包重啟shell腳本問題記錄

    jar包重啟shell腳本問題記錄

    工作中經(jīng)常需要重啟jar包,這里寫一個restart.sh文件,記錄一下,對shell腳本重啟jar包知識感興趣的朋友一起看看吧
    2024-02-02
  • 一個簡單的linux命令 pwd

    一個簡單的linux命令 pwd

    這篇文章主要介紹了一個簡單的linux命令pwd,pwd命令用于查看當前工作目錄的完整路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Shell腳本注釋寫法

    Shell腳本注釋寫法

    這篇文章主要介紹了Shell腳本注釋的3種寫法,包含單行注釋的方法和多行注釋的多種方法,需要的朋友可以參考下
    2014-07-07
  • linux重啟和關(guān)閉系統(tǒng)命令的寫法

    linux重啟和關(guān)閉系統(tǒng)命令的寫法

    這篇文章給大家介紹了linux重啟和關(guān)閉系統(tǒng)命令的寫法,然后在文中給大家分享了linux五個重啟命令,感興趣的朋友一起看看吧
    2017-10-10
  • 詳解Linux中的wget命令

    詳解Linux中的wget命令

    Linux系統(tǒng)中的wget是一個下載文件的工具,它用在命令行下。對于Linux用戶是必不可少的工具,我們經(jīng)常要下載一些軟件或從遠程服務器恢復備份到本地服務器。下面通過本文給大家介紹Linux中的wget命令,一起看看吧
    2017-09-09
  • shell 腳本自動搭建nfs服務的方法示例

    shell 腳本自動搭建nfs服務的方法示例

    這篇文章主要介紹了shell 腳本自動搭建nfs服務的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • ubuntu使用root用戶登錄/切換root權(quán)限的實現(xiàn)

    ubuntu使用root用戶登錄/切換root權(quán)限的實現(xiàn)

    下面小編就為大家?guī)硪黄猽buntu使用root用戶登錄/切換root權(quán)限的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • linux?shell字符串截取的詳細總結(jié)(實用!)

    linux?shell字符串截取的詳細總結(jié)(實用!)

    在開發(fā)的時候經(jīng)常會自行寫一些小的腳本,其中就用到截取字符串的操作,這篇文章主要給大家介紹了關(guān)于linux?shell字符串截取的詳細方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • shell腳本實現(xiàn)磁盤監(jiān)控系統(tǒng)

    shell腳本實現(xiàn)磁盤監(jiān)控系統(tǒng)

    這篇文章主要介紹了shell腳本實現(xiàn)磁盤監(jiān)控系統(tǒng),幫助大家更好的利用shell腳本管理數(shù)據(jù),感興趣的朋友可以了解下
    2020-09-09
  • Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享

    Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享

    這篇文章主要介紹了Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03

最新評論