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

推薦する

ウェブフォーム送信方法の詳細な概要

まず、フォームを送信するいくつかの方法を見てみましょう。 1. <!--一般的な送信ボタン--...

Windows 10 の仮想マシンに Mac システムをインストールするグラフィック チュートリアル

1. 仮想マシンバージョン15.5.1をダウンロードする公式サイトから直接最新バージョンをダウンロー...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

Dockerはプロセス操作を管理するためにSupervisorを使用する

Docker コンテナは、起動時に、たとえば ssh または apache デーモン サービスなどの...

Linux 上での MySQL データベースのリモート展開の詳細な手順

LinuxリモートMySQLデータベースの展開、参考までに、具体的な内容は次のとおりです。 1.0 ...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

Linux での i3 ウィンドウ マネージャーの設定と使用に関するチュートリアル

この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....

Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています

この記事では主に、Vue を使用してタブ ナビゲーション バーを実装し、flex レイアウトを使用し...

Linuxでファイルの作成時間を表示する方法

1. はじめにLinux でファイルの作成時刻が見つかるかどうかは、ファイル システムの種類によって...

MySQL のフィールドにデフォルトの時間を追加する方法

日付型の違いと用途MySQL には、日付、時刻、年、日付時刻、タイムスタンプの 5 つの日付タイプが...

Vueコンポーネントは、写真やビデオをアップロードするためのサンプルコードをカプセル化します

まず依存関係をダウンロードします: cnpm i -S vue-uuid ali-oss画像フィール...

mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例

MyCATとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースク...

いくつかの重要なMySQL変数

MySQL 変数は数多くありますが、その中には注目に値するものもあります。ここでは、参考までに、注目...

Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します

目次Docker の基本概念Docker インストール プロセス (Centos6.9)カーネルのア...

Linuxのファイル権限の詳細な紹介

Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...