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

Shell 命令啟動(dòng)Docker Container的實(shí)現(xiàn)

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

Linux虛擬機(jī)重啟后,都要手動(dòng)啟動(dòng)多個(gè)Docker Container,著實(shí)麻煩,使用Shell命令可以減去這個(gè)麻煩。

創(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ù)名稱啟動(dòng)Docker Contianers
function startContainer(){
? ? sudo docker start $1
}
# 遍歷containerNames
for containerName in ${containerNames}
do
? ? ? ? echo "Container ${containerName} start"
? ? ? ? startContainer ${containerName}
done

啟動(dòng)并測(cè)試

./startcontainer.sh

PS:docker 批量啟動(dòng)項(xiàng)目 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-------------
# 項(xiàng)目目錄
projectsDir="/opt/docker/projects"
# 日志輸出目錄
logsDir="/opt/docker/logs"
#------------配置 end-------------

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

# 啟動(dòng)服務(wù)方法 第一個(gè)參數(shù)為 服務(wù)名,第二個(gè)參數(shù)為 端口
function startServer(){
?? ?echo "--------------啟動(dòng)項(xiàng)目開始:$1 ?$2"
?? ?serverCount=`docker ps -f status=exited | grep $1 |wc -l`;
?? ??? ?# 判斷是否已經(jīng)啟動(dòng)過,且端口為默認(rèn)端口
? ? ? ? if [[ ${serverCount} > 0 && $2 == "" ]];then
? ? ? ? ? ? ? ? echo "docker start 啟動(dòng)項(xiàng)目:$1"
? ? ? ? ? ? ? ? docker start $1
? ? ? ? else?
? ? ? ? ?? ??? ?# 判斷是否生成了鏡像
? ? ? ? ?? ??? ?imageCount=`docker images | grep $1 | wc -l`;

? ? ? ? ?? ??? ?if [[ ${imageCount} > 0 ]];then
?? ? ? ? ? ? ? ? ? ?echo "docker run 啟動(dòng)項(xiàng)目: $1"
?? ? ? ? ? ? ? ? ? ?# 復(fù)制項(xiàng)目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 項(xiàng)目鏡像:$1"
?? ? ? ? ? ? ? ? ?? ?
?? ? ? ? ? ? ? ? ?? ??? ?cd "${projectsDir}/$1"
?? ? ? ? ? ? ? ? ?? ?
?? ? ? ? ? ? ? ? ?? ?docker build -t $1 .

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

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

# 單個(gè)項(xiàng)目操作
if [[ ${serverName} != "all" && ${commond} == "start" ]];then
?? ?
?? ?startServer ${serverName} ${port}
?? ?
elif [[ ? ${serverName} != "all" && ${commond} != "start" ]];then
?? ?echo "開始${commond}容器中的項(xiàng)目:${serverName}"
?? ?docker ${commond} `docker ps | grep ${serverName} | awk -F" ? ? ? ?" '{print $1 }'`
fi

# 全部項(xiàng)目操作
# 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} 容器中的項(xiàng)目:${server}"
?? ??? ?docker ${commond} `docker ps | grep ${serverName} | awk -F" ? ? ? ?" '{print $1 }'`
?? ?
?? ?done
fi

echo "執(zhí)行完畢!"

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

相關(guān)文章

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

    jar包重啟shell腳本問題記錄

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

    一個(gè)簡(jiǎn)單的linux命令 pwd

    這篇文章主要介紹了一個(gè)簡(jiǎn)單的linux命令pwd,pwd命令用于查看當(dāng)前工作目錄的完整路徑,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    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五個(gè)重啟命令,感興趣的朋友一起看看吧
    2017-10-10
  • 詳解Linux中的wget命令

    詳解Linux中的wget命令

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

    shell 腳本自動(dòng)搭建nfs服務(wù)的方法示例

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

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

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

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

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

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

    這篇文章主要介紹了shell腳本實(shí)現(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腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03

最新評(píng)論