Docker ComposeでCODESYS Virtual Control SLを運用する
CODESYS Virtual Control SLのすべての製品は、CODESYS Deploy Toolに加えて、Docker Composeでも運用できます。Deploy ToolはCompose構成を作成します。この構成は、Docker ComposeやPortainerなどのグラフィカルツールでそのまま使用できます。
Deploy ToolからComposeファイルをエクスポートする
バージョン4.23.0.0以降、CODESYS Deploy Toolは、構成済みの仮想ランタイムをComposeファイルとして直接エクスポートできます。
これを行うには、操作タブのVPLCセクションで、エクスポート → セットアップを Compose としてエクスポートコマンドを選択します。これにより、すべてのインスタンスがその構成とともにエクスポートされます。生成されたcompose.yamlは、そのままDocker Composeで使用できます。
注記
Deploy Toolは、すべての設定をCompose形式に変換できるわけではありません。特に、汎用コマンド領域のエントリは変換されません。これらの設定は、エクスポートされたファイル内にコメントとして記載されます。必要に応じて手動で追加してください。
nicmapperでネットワークアダプターを排他的に割り当てる
nicmapperは、Dockerコンテナー内のネットワークアダプターへの直接かつ排他的なアクセスを提供するDocker用プラグインです。
nicmapperに関するすべてのファイルは、CODESYS Virtual Control SLパッケージに含まれています。ソースコード、インストールファイル、およびサンプルのcompose.yamlは、CODESYS Development Systemのインストールディレクトリ内のCODESYS Virtual Control for Linux SL\Delivery\nicmapperにあります。
注記
以下で説明するnicmapperによるネットワークインターフェースの割り当ては、現在Docker Composeでのみサポートされています。Podman Composeでは、手動での調整が必要になる場合があります。
CODESYS Deploy ToolまたはVirtualControlAPIを介して運用する場合、ネットワークアダプターはネームスペースによって1つのランタイムに排他的に割り当てられます。これにより、コンテナーはネットワークアダプターに直接、かつ可能な限りリアルタイムに近い形でアクセスできます。
Docker Composeには、このためのネイティブサポートがありません。Composeを使用する場合にも同等の動作を実現するため、Dockerプラグインのnicmapperが提供されています。
nicmapperをインストールする
nicmapperをインストールするには、Linuxシステムで次の前提条件を満たしている必要があります。
Dockerがインストールされている
Docker Composeがインストールされている
オープンソースのプログラミング言語Goがインストールされている
ipコマンドとnsenterコマンドが使用可能であるroot権限がある
CODESYS Development Systemのインストールディレクトリから
nicmapperディレクトリをLinuxシステムにコピーします。Linuxシステムで、
nicmapperディレクトリに移動します。build.shファイルがWindows形式の場合は、UNIX形式に変換します。dos2unix build.shファイルを実行可能にします。
chmod +x build.shスクリプトを実行します。
sudo ./build.sh
このスクリプトにより、プラグインと、オプションでバックグラウンドサービスがインストールされます。このサービスはDockerコンテナーを監視し、ネットワークインターフェースを自動的に割り当てます。
インストール、アンインストール、およびトラブルシューティングの詳細については、付属のREADME.mdを参照してください。
Composeファイルでネットワークアダプターを割り当てる
ネットワークインターフェースの割り当ては、ラベルcds.nicmapper.nicを使用して行います。値は、CODESYS Deploy Toolで使用されている形式と同じです。複数のネットワークアダプターを指定する場合は、カンマで区切ります。IPアドレスとネットワークマスクは省略可能です。
services:
runtime:
image: codesyscontrol_virtuallinux:4.22.0.0
container_name: runtime
hostname: runtime
labels:
cds.nicmapper.nic: "eth0/10.0.0.5/24,eth1/192.168.32.8/24"compose.yamlがあるディレクトリで環境を起動します。
docker compose up -d
注記
Deploy ToolでComposeファイルを作成すると、ラベルcds.nicmapper.nicが正しい形式で割り当てられます。
起動後、nicmapperは対象のコンテナーを自動的に検出し、指定されたネットワークインターフェースをそれぞれのコンテナーに移動します。これにより、CODESYS Virtual Control SLの製品は、Composeベースの環境でも、CODESYS Deploy Toolで構成した場合と同等のネットワーク動作で運用できます。コンテナーが停止すると、nicmapperはアダプターを再びシステム全体で使用できるようにします。
compose.yamlの完全なサンプルがパッケージに含まれています。