この記事では、InterSystemsCaché/ Ensembleを使用して
Dockerイメージを取得する方法について説明します。
最初から始めましょう、つまり dockerfileを使用します。
Dockerfileは、イメージを構築するための指示を含むyml形式のシンプルなテキストファイルです。
InterSystemsはRedHatをメインプラットフォームとして、CentOSを開発プラットフォームとして公式にサポートしているため、CentOSをベースイメージとして使用することをお勧めします。
FROM centos:6
自分をファイルの作成者として追加できます。
MAINTAINER Dmitry Maslennikov <mrdaimor@gmail.com>
最初のステップは、インストールプロセス中およびCachéが機能するために必要なユーティリティをインストールすることです。 ここで、タイムゾーンも設定します。
# update OS + dependencies & run Caché silent instal RUN yum -y update \ && yum -y install which tar hostname net-tools wget \ && yum -y clean all \ && ln -sf /etc/locatime /usr/share/zoneinfo/Europe/Moscow
配布用の一時フォルダーを定義します。
ENV TMP_INSTALL_DIR=/tmp/distrib
デフォルト値を使用していくつかの引数を定義しますが、これらはアセンブリ中に変更できます。
ARG password="Qwerty@12" ARG cache=ensemble-2016.2.1.803.0
ここで、無人インストールのパラメーターを決定する必要があります。
ENV ISC_PACKAGE_INSTANCENAME="ENSEMBLE" \ ISC_PACKAGE_INSTALLDIR="/opt/ensemble/" \ ISC_PACKAGE_UNICODE="Y" \ ISC_PACKAGE_CLIENT_COMPONENTS="" \ ISC_PACKAGE_INITIAL_SECURITY="Normal" \ ISC_PACKAGE_USER_PASSWORD=${password}
CachéセキュリティをNormalに設定することにしたので、パスワードを設定する必要があります。
詳細な設定オプションは
ドキュメントにあり
ます 。
作業ディレクトリとして、今のところ、ディストリビューションの一時フォルダーを設定しましょう。このフォルダーは、以前に存在しなかった場合、このディレクティブで作成されます。
WORKDIR ${TMP_INSTALL_DIR}
画像をパブリックリポジトリにアップロードしない場合は、すぐにライセンスファイルを追加できます。
COPY cache.key $ISC_PACKAGE_INSTALLDIR/mgr/
ビルドするには配布キットが必要になりますが、それを入手するにはいくつかの方法があります。
- ディストリビューションを手動でダウンロードし、Dockerfileの横に配置し、すぐにコマンドで追加して、指定されたパスで展開します。
ADD $cache-lnxrhx64.tar.gz .
- WRCから直接ダウンロードします。
RUN wget -qO /dev/null --keep-session-cookies --save-cookies /dev/stdout --post-data="UserName=$WRC_USERNAME&Password=$WRC_PASSWORD" 'https://login.intersystems.com/login/SSO.UI.Login.cls?referrer=https%253A//wrc.intersystems.com/wrc/login.csp' \ | wget -O - --load-cookies /dev/stdin "https://wrc.intersystems.com/wrc/WRC.StreamServer.cls?FILE=/wrc/distrib/$cache-lnxrhx64.tar.gz" \ | tar xvfzC - .
この場合、ディストリビューションにアクセスするにはWRCからログインとパスワードを指定する必要があり、引数のリストにさらに2つ追加する必要があります。
ARG WRC_USERNAME=”username” ARG WRC_PASSWORD=”password”
Dockerfileでのパスワードの言及は、後で取り出すことができるため、安全ではないことに注意してください。 したがって、これは最も安全な方法ではありません。
- また、推奨される方法は、会社の内部サーバーにディストリビューションを保存し、そこから匿名アクセスでダウンロードすることです。
RUN wget -O - "ftp://ftp.company.com/cache/$cache-lnxrhx64.tar.gz" \ | tar xvfzC - .
すべてをインストールする準備ができたら、実行できます。
RUN ./$cache-lnxrhx64/cinstall_silent
インストールが完了したら、サーバーを停止する必要があります。
RUN ccontrol stop $ISC_PACKAGE_INSTANCENAME quietly
しかし、これだけではありません; Dockerでは、コンテナーが機能するために、プロセスを制御するプロセスが1つ必要です。 このためには、
Luca Ravazzoloの ccontainermainプロジェクトが必要
です 。
githubからバイナリを直接ダウンロードします。
# Caché container main process PID 1 (https:
一時フォルダーをクリーニングします。
RUN rm -rf $TMP_INSTALL_DIR
オーバーレイドライバが使用されているかどうかに注意してくださいDockerがオーバーレイドライバーで動作するように構成されている場合、問題が発生する可能性があり、そのような行を追加してccontrolにラッパーを追加する必要があります。そうしないと、Cachéの起動時にすぐに<PROTECT>エラーで失敗します。
# Workaround for an overlayfs bug which prevents Cache from starting with <PROTECT> errors COPY ccontrol-wrapper.sh /usr/bin/ RUN cd /usr/bin \ && rm ccontrol \ && mv ccontrol-wrapper.sh ccontrol \ && chmod 555 ccontrol
ラッパーコードはccontrol-wrapper.shです。
このコマンドを使用して、Dockerで使用されているドライバーを確認できます。
docker info --format '{{.Driver}}'
Cachéの回避策OverlayFSのバグに関する詳細 コンテナで使用されるネットワークポートをDockerに指示する必要があります。これらはWebアクセスの場合は57772、バイナリアクセスの場合は1972、Cachéの標準のデフォルトポートです。
EXPOSE 57772 1972
最後に、コンテナの起動方法を説明しましょう。
ENTRYPOINT ["/ccontainermain", "-cconsole", "-i", "ensemble"]
その結果、ファイルは次の形式を取ります。
FROM centos:6 MAINTAINER Dmitry Maslennikov <Dmitry.Maslennikov@csystem.cz> # update OS + dependencies & run Caché silent instal RUN yum -y update \ && yum -y install which tar hostname net-tools wget \ && yum -y clean all \ && ln -sf /etc/locatime /usr/share/zoneinfo/Europe/Prague ARG password= ARG cache=ensemble-2016.2.1.803.0 ENV TMP_INSTALL_DIR=/tmp/distrib # vars for Caché silent install ENV ISC_PACKAGE_INSTANCENAME= \ ISC_PACKAGE_INSTALLDIR= \ ISC_PACKAGE_UNICODE= \ ISC_PACKAGE_CLIENT_COMPONENTS= \ ISC_PACKAGE_INITIAL_SECURITY= \ ISC_PACKAGE_USER_PASSWORD=${password} # set-up and install Caché from distrib_tmp dir WORKDIR ${TMP_INSTALL_DIR} ADD $cache-lnxrhx64.tar.gz . # cache distributive RUN ./$cache-lnxrhx64/cinstall_silent \ && ccontrol stop $ISC_PACKAGE_INSTANCENAME quietly \ # Caché container main process PID 1 (https://github.com/zrml/ccontainermain) && curl -L https://github.com/daimor/ccontainermain/raw/master/distrib/linux/ccontainermain -o /ccontainermain \ && chmod +x /ccontainermain \ && rm -rf $TMP_INSTALL_DIR WORKDIR ${ISC_PACKAGE_INSTALLDIR} # TCP sockets that can be accessed if user wants to (see 'docker run -p' flag) EXPOSE 57772 1972 ENTRYPOINT [, , , ]
これで、画像を組み立てる準備ができました。 Dockerfileがあるフォルダーでこのようなコマンドを実行する必要があります。
docker build -t ensemble-simple .
ビルドプロセス中に、元のイメージがロードされ、Cachéインストールプロセス自体がロードされます。
次のように、アセンブリのパラメーターの値を変更できます。
docker build
docker build --build-arg cache=ensemble-2016.2.1.803.1 -t ensemble-simple .
そして、そのようなコマンドで新しいイメージを起動できます。
docker run -d -p 57779:57772 -p 1979:1972 ensemble-simple
ここで57779および1979、これらはローカルマシンからコンテナにアクセスできるポートです。
このコマンドを使用すると、実行中のすべてのコンテナーを表示できます。
docker ps
コンテナIDイメージコマンド作成されたステータスポート名
5f8d2cb3745a ensemble-simple "/ ccontainermain -..." 18秒前アップ17秒0.0.0.0:1979->1972/tcp、0.0.0.0∗7779->57772/tcp keen_carson
http:// localhost:57779 / csp / sys / UtilHome.cspで管理ポータルを開くことができます。 新しいシステムは機能し、手頃な価格です。

ソースはgithubで
ここにあります 。