最近、日々のテストで docker を手動で起動または停止する必要があることが多くなったため、手動操作を置き換えるためにシェル スクリプトを作成することにしました。また、次に示すように、スクリプトは Python スクリプトを介してリモートで呼び出すこともできます。 現在、スクリプトはコンテナ ID をスクリプト内にハードコードしています。もちろん、スクリプトにパラメータを渡すことで制御することもできます。変更することもできます。 Dockerを起動する起動スクリプトは次のとおりです。 #!/bin/bash コンテナID="ad3e4d7fc407 a228730a915f ad3e4d7fc4099" statusLived="ライブ" statusdead="死亡" notExistContainer="なし" 再試行回数=3 関数 GetContainerStatus(){ コンテナが存在する場合=$(sudo docker ps -a | grep -i $1 | wc -l ) [ ${containerExist} -gt 0 ]の場合 それから pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 ) [ "${pid}" != "0" の場合 それから エコー「${statusLived}」 それ以外 echo "${statusdead}" フィ それ以外 echo "${notExistContainer}" フィ } 関数StartContainer(){ sudo docker 再起動 $1 } ${containerIDs} のコンテナID する ((i=1;i<=${再試行回数};i++)) の場合 する ステータス=$(GetContainerStatus ${containerID}) echo "コンテナ ${containerID} のステータスは ${status} です" [ "${status}" == ${statusLived} ] の場合 それから echo "コンテナ ${containerID} はすでに実行中です" 壊す フィ [ "${status}" == ${notExistContainer} ] の場合 それから echo "コンテナ ${containerID} は存在しませんでした" 壊す フィ [ "${status}" == ${statusdead} ] の場合 それから echo "コンテナ ${containerID} が停止しました、コンテナを起動してください" コンテナの開始 ${containerID} 検証ステータス=$(GetContainerStatus ${containerID}) [ "${verifyStatus}" == ${statusLived} ] の場合 それから echo "コンテナ ${containerID} の起動に成功しました" 壊す それ以外 echo "${i} コンテナの起動を再試行します" コンテナの開始 ${containerID} フィ フィ 終わり 終わり Dockerを停止する停止スクリプトは次のとおりです。 #!/bin/bash コンテナID="589bda1309cd ad3e4d7fc407 a228730a915f ad3e4d7fc4099" statusLived="ライブ" statusdead="死亡" notExistContainer="なし" 再試行回数=3 関数 GetContainerStatus(){ コンテナが存在する場合=$(sudo docker ps -a | grep -i $1 | wc -l ) [ ${containerExist} -gt 0 ]の場合 それから pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 ) [ "${pid}" != "0" の場合 それから エコー「${statusLived}」 それ以外 echo "${statusdead}" フィ それ以外 echo "${notExistContainer}" フィ } 関数StopContainer(){ sudo docker stop $1 } ${containerIDs} のコンテナID する ((i=1;i<=${retryCount};i++)) の場合 する ステータス=$(GetContainerStatus ${containerID}) echo "コンテナ ${containerID} のステータスは ${status} です" [ "${status}" == ${statusdead} ] の場合 それから echo "コンテナ ${containerID} はすでに停止しています" 壊す フィ [ "${status}" == ${notExistContainer} ] の場合 それから echo "コンテナ ${containerID} は存在しませんでした" 壊す フィ [ "${status}" == ${statusLived} ] の場合 それから echo "コンテナ ${containerID} は稼働中です。コンテナを停止してください" コンテナを停止 ${containerID} 検証ステータス=$(GetContainerStatus ${containerID}) [ "${verifyStatus}" == ${statusdead} ] の場合 それから echo "コンテナ ${containerID} の停止に成功しました" 壊す それ以外 echo "${i} コンテナの停止を再試行します" コンテナを停止 ${containerID} フィ フィ 終わり 終わり Python 呼び出しスクリプトPython サンプル スクリプトは次のとおりです。 パラミコをインポートする def StartContainer(svr,port,user,pwd): クライアント = paramiko.SSHClient() クライアントがホストキーポリシーを欠落しているかどうかを設定します。 client.connect(svr、ポート=port、ユーザー名=user、パスワード=pwd、タイムアウト=5) client.exec_command("cd /home/TestCode/ && bash startContainer.sh") def StopContainer(svr,port,user,pwd): クライアント = paramiko.SSHClient() クライアントがホストキーポリシーを欠落しているかどうかを設定します。 client.connect(svr、ポート=port、ユーザー名=user、パスワード=pwd、タイムアウト=5) client.exec_command("cd /home/TestCode/ && bash stopContainer.sh ") 要約する 以上、シェルスクリプトを使用して Docker サービスを一括起動・停止する方法についてご紹介しました。お役に立てれば幸いです。 以下もご興味があるかもしれません:
|
<<: TypeScript の Enum が問題となる理由
>>: MySQL インデックスのカーディナリティの概念と使用例
目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...
同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...
効果効果図は以下のとおりです実装のアイデアDivは太陽の長方形の光と影を実現します前の疑似要素は、既...
MySql データベース システムをインストールして構成します。 1. ダウンロード http://...
SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...
目次1 配列のフラット化とは何ですか? 2 JS標準ライブラリの配列フラット化メソッド3 フラットメ...
目次1. Vue ライフサイクル2. フック機能2.1 4つの段階と8つの方法に分かれています。 2...
目次1. エフェクト表示2. 検証コードとメールプッシュ管理の強化(後述のブログを参照) 3. 一般...
コード知識ポイント1. fullpage.jsを組み合わせてフルスクリーンスクロールを実現する2. ...
デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...
フロントエンド開発者にとって、さまざまな主要ブラウザのさまざまなバージョンでコードが適切に動作するこ...
この記事の例では、ユーザー登録機能を実装するためのjsの具体的なコードを参考までに共有しています。具...
環境Linux 3.10.0-693.el7.x86_64 Docker バージョン 18.09.0...
序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...
目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...