1.22.1 コンテナイメージの作成
- 〈この項の構成〉
(1) ベースとするコンテナイメージの条件
Dockerイメージ,Podmanイメージのベースとするコンテナイメージの条件については,それぞれ「15.3.12(4)(b)コンテナイメージの前提条件」,「15.3.12(5)(b) コンテナイメージの前提条件」を参照してください。
(2) Dockerイメージ,Podmanイメージの作成方法
-
イメージを作成するDockerホスト上またはPodmanホスト上に作業ディレクトリを作成する。
-
作業ディレクトリ下に,次のものを用意する。
-
Dockerfileファイル
-
JP1/IM - Agentのインストールパッケージ
-
supervisord定義ファイル(Supervisorを使用する場合を例として記載しています)
-
起動スクリプト
-
credentialsファイル(Yet another cloudwatch exporterを使用する場合)
-
confディレクトリに配置するファイル
ここでは,次のディレクトリ構成とします。
JP1/IM - Agentの定義ファイルのうち,更新したいファイルをconfディレクトリに配置します。
作業ディレクトリ/※1 ├ Dockerfile※2 ├ JP1IMA/※3 │ └X64LIN/ │ ├ h_inst │ ├ ppmanage │ ├ setup │ └ PCC842C/ │ └ 9GDL/ │ └・・・ ├ supervisord.conf※4 ├ start.sh※5 ├ credentials※6 └ conf/ ├ jpc_imagentcommon.json.model※7 ├ jpc_alerting_rules.yml.model※8 ├ jpc_ya_cloudwatch_exporter.yml.model※9 ├ jpc_blackbox_exporter.yml.model※10 ├ jpc_file_sd_config_blackbox_http.yml.model※11 ├ jpc_file_sd_config_blackbox_icmp.yml.model※12 └ user/ └ cert/ └ XXXX.crt※13注※1 手順1で作成した作業ディレクトリ
注※2 Dockerfileファイル
注※3 JP1/IM - Agentのインストールパッケージを展開したディレクトリおよびファイル
注※4 supervisord定義ファイル
注※5 起動スクリプト
注※6 AWSクレデンシャルファイル(Yet another cloudwatch exporterを使用する場合)
注※7 imagent共通設定ファイル
注※8 アラート設定ファイル(アラート定義を行う場合)
注※9 Yet another cloudwatch exporter設定ファイル
注※10 Blackbox exporter設定ファイル
注※11 Blackbox(HTTP/HTTPS監視)のディスカバリ設定ファイル
注※12 Blackbox(ICMP監視)のディスカバリ設定ファイル
注※13 統合マネージャーホストに接続するためのCA証明書
■定義ファイルに関する注意事項
定義ファイルにIPアドレスを指定しないでください。また,証明書ファイルにIPアドレス情報を含めないでください。IPアドレス情報を含めた場合,動的にIPアドレスが変わるコンテナに対応できません。
■Dockerfileファイルの例
下記の例にあるENVの行のように必要に応じてインストーラの環境変数を設定してください。
FROM oraclelinux:8 RUN mkdir /root/.aws COPY credentials /root/.aws/credentials COPY JP1IMA/X64LIN /tmp/X64LIN COPY start.sh /opt/start.sh COPY supervisord.conf /opt/supervisord.conf RUN dnf install -y python3 RUN pip3 install supervisor RUN dnf install -y cpio RUN chmod a+x /opt/start.sh ENV JP1IMAGENT_INSTALL_MODE "image" ENV JP1IMAGENT_IMMGR_HOST "接続先マネージャのホスト名を設定する" ENV JP1IMAGENT_IMMGR_INITIAL_SECRET "初期シークレットを設定する" ENV JP1IMAGENT_ADDON_BLACKBOX_EXPORTER_ACTIVE "yes" ENV JP1IMAGENT_ADDON_YA_CLOUDWATCH_EXPORTER_ACTIVE "yes" RUN /tmp/X64LIN/setup -f -k P-CC842C-9GDL /tmp/ COPY conf /opt/jp1ima/conf CMD [ "/bin/bash", "-c", "/opt/start.sh" ]
■supervisordのサービス定義ファイルの作成例
[unix_http_server] file=/tmp/supervisor.sock ; the path to the socket file [supervisord] logfile=/tmp/supervisord.log logfile_maxbytes=5MB logfile_backups=10 loglevel=info pidfile=/tmp/supervisord.pid nodaemon=true [program:imagent] command=/opt/jp1ima/bin/imagent directory=/opt/jp1ima/bin/ stopasgroup=true autostart=true stopwaitsecs=180 [program:imagentaction] command=/opt/jp1ima/bin/imagentaction directory=/opt/jp1ima/bin/ stopasgroup=true autostart=true stopwaitsecs=180 [program:imagentproxy] command=/opt/jp1ima/bin/imagentproxy directory=/opt/jp1ima/bin/ stopasgroup=true autostart=true stopwaitsecs=180 [program:prometheus] command=コマンドライン ※1 directory=/opt/jp1ima/bin ※2 autostart=true ※3 stopasgroup=true stopwaitsecs=180 [program:alertmanager] command=コマンドライン ※1 directory=/opt/jp1ima/bin ※2 autostart=true ※3 stopasgroup=true stopwaitsecs=180 [program:node_exporter] command=コマンドライン ※1 directory=/opt/jp1ima/bin ※2 autostart=true ※3 stopasgroup=true stopwaitsecs=180 [program:プログラム名] command=コマンドライン ※1 directory=/opt/jp1ima/bin ※2 autostart=true ※3 stopasgroup=true ※4 stopwaitsecs=180
注 使用しないサービスについては記述不要です。
注※1 コマンドラインには,物理ホストの/usr/lib/systemd/systemディレクトリに格納されているjpc_xxxxxxx.serviceに記載されているExecStartの値を使用します。
注※2 サービス管理プログラムからJP1/IM - Agentプログラムを動かす際のカレントディレクトリは「/opt/jp1ima/bin」にします。
注※3 自動起動を有効にします。
注※4 stopasgroupをtrueにします。
■起動スクリプトの例
#!/bin/bash /opt/jp1ima/tools/jimasetup container※1 mv -f /opt/jp1ima/conf/jpc_file_sd_config_blackbox_http.yml \ /opt/jp1ima/conf/jpc_file_sd_config_off※2 mv -f /opt/jp1ima/conf/jpc_file_sd_config_blackbox_icmp.yml \ /opt/jp1ima/conf/jpc_file_sd_config_off※2 mv -f /opt/jp1ima/conf/jpc_file_sd_config_cloudwatch.yml \ /opt/jp1ima/conf/jpc_file_sd_config_off※2 mv -f /opt/jp1ima/conf/jpc_file_sd_config_process.yml \ /opt/jp1ima/conf/jpc_file_sd_config_off※2 mv -f /opt/jp1ima/conf/jpc_file_sd_config_promitor.yml \ /opt/jp1ima/conf/jpc_file_sd_config_off※2 exec /usr/local/bin/supervisord -c /opt/supervisord.conf※3
注※1 JP1/IM - Agentの初期設定コマンドをcontainerオプション指定で実行します。
注※2 次に示すサービスについて,使用しないサービスに対応するディスカバリ設定ファイルを,/opt/jp1ima/confディレクトリから/opt/jp1ima/conf/jpc_file_sd_config_offディレクトリに移動します。
サービス
ディスカバリ設定ファイル
prometheus_server
なし
alertmanager
なし
windows_exporter
jpc_file_sd_config_windows.yml
blackbox_exporter
-
jpc_file_sd_config_blackbox_http.yml
-
jpc_file_sd_config_blackbox_icmp.yml
ya_cloudwatch_exporter
jpc_file_sd_config_cloudwatch.yml
fluentd
なし
promitor
jpc_file_sd_config_promitor.yml
script_exporter
なし
注※3 サービス管理ツールを実行します。
■imagent共通設定ファイルの例
imagent共通定義ファイルのモデルファイル(jpc_imagentcommon.json.model)の例は次のとおりです。
TLSを使用する場合はca_fileにCA証明書のパスを設定します。TLSを使用しない場合はtls_configの項目を削除します。
{ "JP1_BIND_ADDR": "ANY", "COM_LISTEN_ALL_ADDR": 0, "COM_MAX_LISTEN_NUM": 4, "JP1_CLIENT_BIND_ADDR": "ANY", "http": { "max_content_length": 10, "client_timeout": 30 }, "immgr": { "host": "@@immgr.host@@", "proxy_url": "@@immgr.proxy_url@@", "proxy_user": "@@immgr.proxy_user@@", "tls_config": { "ca_file": "/opt/jp1ima/conf/user/cert/XXXX.crt", "insecure_skip_verify": false, "min_version": "TLSv1_2" }, "imbase": { "port": @@immgr.imbase_port@@ }, "imbaseproxy": { "port": @@immgr.imbaseproxy_port@@ } } } -
-
Dockerfileの存在するディレクトリに移動し,DockerビルドまたはPodmanビルドを起動する。
-
Dockerの場合
# docker build -t <Dockerイメージ名>:<タグ> .
-
Podmanの場合
# podman build -t <Podmanイメージ名>:<タグ> .
-
(3) Dockerコンテナ,Podmanコンテナの作成方法
-
DockerコンテナまたはPodmanコンテナを起動する。
-
Dockerの場合
# docker container run --ulimit nofile=65536:65536 --add-host=マネージャホスト名:IPアドレス -d -h <コンテナにつけるホスト名> <Dockerイメージ名>:<タグ>
-
Podmanの場合
# podman container run --ulimit nofile=65536:65536 --add-host=マネージャホスト名:IPアドレス -d -h <コンテナにつけるホスト名> <Podmanイメージ名>:<タグ>
- 重要
-
コンテナのホスト名は,統合オペレーション・ビューアーのツリーに表示されます。-hオプションを省略すると,DockerやPodmanが自動的にホスト名を設定し,そのホスト名が統合オペレーション・ビューアーのツリーに表示されることになるため,ホスト名を指定することを推奨します。
-
-
サービス管理ツールのログ,JP1/IM - Agentのログを確認し,正常に稼働していることを確認する。
エラーが出力されている場合や稼働させたいプロセスが起動していない場合は,原因を特定して,DockerイメージまたはPodmanイメージを作り直します。
-
IM管理ノードのツリー情報を更新する。
詳細については,「1.21.2(10) IM管理ノードのツリー情報の作成と反映(Windowsの場合)(必須)」を参照してください。
(4) Dockerコンテナ,Podmanコンテナの削除方法
-
DockerコンテナまたはPodmanコンテナを停止する。
-
Dockerの場合
# docker container stop コンテナ名
-
Podmanの場合
# podman container stop コンテナ名
-
-
DockerコンテナまたはPodmanコンテナを削除する。
-
Dockerの場合
# docker container rm コンテナ名
-
Podmanの場合
# podman container rm コンテナ名
-
-
IM管理ノードのツリー情報を更新する。
詳細については,「1.21.2(10) IM管理ノードのツリー情報の作成と反映(Windowsの場合)(必須)」を参照してください。
(5) カーネルパラメーターへの影響について
ファイルディスクリプタ数の上限については,コンテナ起動時の--ulimitオプションに「65536」を指定します。
詳細については,「1.22.1(3) Dockerコンテナ,Podmanコンテナの作成方法」を参照してください。