Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 Dockerfile にサービス起動スクリプトを記述し、Dockerfile を使用してイメージを再構築するだけです。

  • アプリケーションサービスのセルフスタートスクリプトを作成する
  • Dockerfileの作成
  • イメージの再構築
  • コンテナを開く

サービスのセルフスタートスクリプトを書く (dockerd)
(Tomcatを例に挙げます)

#!/bin/bash
#
# 
#
# chkconfig: 345 98 30
# 説明: tomcat プログラム。
# プロセス名: tomcat
# ソース関数ライブラリ。
. /etc/rc.d/init.d/functions
# ソースネットワーク構成。
#. /etc/sysconfig/ネットワーク


プログラム = "tomcat"

チェックプロセス()
{
  chkret=`ps -ef |grep $prog |grep -v "grep" |wc -l`
    $chkretを返す
}

始める()
{
    cd /usr/local/tomcat/bin/
   ./スタートアップ.sh
  echo "サービス $prog が開始されました!"
}

#/usr/sbin/nscd &
/usr/sbin/sshd -D &
[ 真 ] である間
する
        172.18.3.179 のIPアドレス
          ping=`ping -c 3 $DNSIP|awk 'NR==7 {print $4}'`
        [[ $ping -eq "3" ]]の場合
        それから
            壊す
        フィ
    睡眠3
終わり

[ 真 ] である間
する
    チェックプロセス
     [[ $chkret -eq "0" ]]の場合
        それから
              始める
     #nscd -i ホスト
        それ以外 
          echo "サービス $prog は実行中です。"

        フィ
    睡眠60
終わり
終了 0

Dockerfileの作成

tomcatから

メンテナー liu "[email protected]"

dockerd /etc/rc.d/init.d/ を追加します。
chmod 777 /etc/rc.d/init.d/dockerd を実行します。

環境変数JAVA_HOME /usr/local/jdk1.6.0_30
環境変数 PATH $JAVA_HOME/bin:$PATH
ENV クラスパス .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

コマンド /etc/rc.d/init.d/dockerd

このうち、ADD はイメージの指定場所に同じディレクトリ内のスクリプトを追加し、ENV は Java 環境変数を設定します (非常に重要、この文がないと自己起動スクリプトは正常に実行できません)。CMD コマンドは 1 つだけ存在でき、コンテナの起動時にコマンドを実行するために使用されます。スクリプトでも構いません。

イメージの再構築
**合格
docker build -t 新しいイメージ名。
新しいイメージを作成しました

コンテナを開く

docker run -d -h="s" –name="s" 新しいイメージ名

すると、Tomcatがすでに起動していることがわかりました

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ホスト上のDockerコンテナ内でシェルまたはプログラムを実行する
  • シェルスクリプトを使用して Docker サービスを一括で開始および停止する
  • Dockerコンテナの起動失敗を解決する方法
  • docker で systemctl を使用してサービスを開始する際のエラーの解決方法の詳細な説明
  • Dockerコンテナの起動後にポートマッピングを追加する
  • Docker コンテナで Flume を実行し、実行ログを出力せずに起動する
  • シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明

<<:  64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

>>:  Vue フォームのポストリクエストとサーブレットを組み合わせてファイルアップロード機能を実現する

推薦する

MySQLスケーラブル設計の基本原則

目次序文1. スケーラビリティとは何ですか?スケールアウトの利点:スケールアウトのデメリット:スケー...

iframe 適応サイズ実装コード

ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...

HTML CSS JS はタブページのサンプルコードを実装します

コードをコピーコードは次のとおりです。 <html xmlns="">...

Linuxのbasenameコマンドの使い方

01. コマンドの概要basename - ファイル名からディレクトリとサフィックスを削除しますba...

トークンの有効期限が切れたときにページを更新するときに繰り返しプロンプトが表示されないようにする Vue について

トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...

Photoshop を使って Web ワイヤーフレームを作成する方法

この投稿では、通知、画像とビデオ、フォーム フィールド、タイトル、段落、箇条書きリスト、ナビゲーショ...

HTML でよく使用されるエスケープ文字の概要

HTML でよく使用されるエスケープ文字をまとめると次のようになります。 &nbsp; 改行...

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...

MySQLのさまざまなロックに関する詳細な理解

目次ロックの概要ロックの分類データベース操作の粒度データ操作の種類MySQL ロックさまざまなストレ...

Docker に fastdfs イメージをインストールする際の注意事項

1. Docker環境を準備する2. fastdfsイメージを検索する 3. イメージをプルするdo...

XHTML Web ページ チュートリアル

<br />この記事は主に、初心者にXHTMLの基本知識と、XHTMLとHTMLの違いを...

MySQL におけるデータタイムとタイムスタンプの違い

MySQL には 3 つの日付型があります。日付(年-月-日)テーブル test(hiredate ...

VMware vSphere 6.7 (ESXI 6.7) のグラフィック インストール手順

環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...

Chrome デベロッパー ツールの詳細な紹介 - タイムライン

1. 概要ユーザーは、アクセスする Web アプリケーションがインタラクティブでスムーズに実行される...

Vueフィルターとカスタム命令の使用

目次フィルター01.とは02. やり方(1)フィルターを定義する(2)使用方法(3)フィルタパラメー...