Skip to main content

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権限がある

  1. CODESYS Development SystemのインストールディレクトリからnicmapperディレクトリをLinuxシステムにコピーします。

  2. Linuxシステムで、nicmapperディレクトリに移動します。

  3. build.shファイルがWindows形式の場合は、UNIX形式に変換します。

    dos2unix build.sh
  4. ファイルを実行可能にします。

    chmod +x build.sh
  5. スクリプトを実行します。

    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の完全なサンプルがパッケージに含まれています。