コンテナでのサードパーティー製アプリケーションの実行
Junos OS Evolvedで独自のアプリケーションを実行するには、Dockerコンテナ内に導入するオプションがあります。コンテナは Junos OS Evolved 上で動作し、エージェントはコンテナ内で動作し、OS から分離します。コンテナは 、/var/extensions にマウントされた独立したパーティションにインストールされます。
コンテナには、システムで使用できるリソースのデフォルト制限があります。
Storage – /var/extensions パーティションのサイズはプラットフォームによって駆動されます。 /var の総サイズの 8 GB または 30% は小さい方です。
Memory – コンテナのデフォルトでは、物理メモリ全体の 2 GB または 10% が小さい方が制限されています。
CPU – コンテナのデフォルトのCPU使用率は、すべてのコアで最大20%に制限されています。
コンテナのリソース制限は、必要に応じて変更できます。コンテナ のリソース制限の変更 を参照してください。
Docker コンテナの導入
Docker コンテナを導入するには、次の方法に関します。
Docker コンテナの管理
Docker コンテナは Linux のワークフローで管理されます。または Linux コマンド ps
を top
使用して、実行されている Docker コンテナを表示し、Docker コマンドを使用してコンテナを管理します。Docker コマンドの詳細については、以下を参照 https://docs.docker.com/engine/reference/commandline/cli/
Junos OS Docker コンテナのカスタム アプリケーションでは、進化した高可用性機能はサポートされていません。アプリケーションに高可用性機能がある場合、各 RE でアプリケーションを実行して、同期を確実に行う必要があります。
コンテナ内でのNetlinkまたはパケットIOの有効化
コンテナが Netlink や Packet IO のような追加機能を必要とする場合は、Docker コマンドにさらに引数を指定する必要があります。次の例では、Docker コマンドに引数を追加することで、コンテナに対して Netlink または Packet IO 機能をアクティブにする方法を示しています。
Docker サービスの起動時に、読み取り専用の名前の持続的なボリュームを作成します。
--mount source=jnet,destination=/usr/evo
コンテナ プロセスで、ホストのネットワークの名前空間を共有します。
--network=host
システムの再起動時に自動的にコンテナを起動します。
--restart=always
Netlink およびパケット IO ライブラリで必要とされる net admin 機能を有効にします。
--cap-add=NET_ADMIN
Netlink とパケット IO に必要な環境変数を有効にする:
--env-file=/run/docker/jnet.env
Docker コンテナの VRF の選択
コンテナは、Docker のデーモンから VRF(仮想ルーティングと転送)を継承します。コンテナを個別の VRF で実行するには、Docker デーモン インスタンスを対応する VRF で開始する必要があります。インスタンス docker@vrf.service
では、対応する VRF でデーモンを開始できます。VRF が未指定の場合、VRF は デフォルトで vrf0
.
デフォルト docker.service
では実行 vrf:none
されます。
特定の VRF 用の Docker デーモンは 、/run/docker-vrf.sock にある対応するソケットをリッスンします。
Docker クライアントは、次の引数を使用して VRF 固有の Docker デーモンに関連付けられる。
--env-file /run/docker-vrf/jnet.env --host unix:///run/docker-vrf.sock or export DOCKER_HOST=unix:///run/docker-vrf.sock
たとえば、次のDockerコマンドと vrf0
引数を入力してコンテナを実行します。
[vrf:none] user@host:~#docker -H unix:///run/docker-vrf0.sock run --rm -it --network=host --cap-add=NET_ADMIN --mount source=jnet,destination=/usr/evo --env-file=/run/docker-vrf0/jnet.env debian:stretch ip link 1002: et-01000000000: BROADCAST,MULTICAST,UP mtu 1514 state UP qlen 1 link/ether ac:a:a:18:01:ff brd ff:ff:ff:ff:ff:ff 1001: mgmt-0-00-0000: BROADCAST,MULTICAST,UP mtu 1500 state UP qlen 1 link/ether 50:60:a:e:08:bd brd ff:ff:ff:ff:ff:ff 1000: lo0_0: LOOPBACK,UP mtu 65536 state UP qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
コンテナは 1 つの VRF にのみ関連付けできます。
コンテナのリソース制限の変更
コンテナのデフォルトリソース制限は、 /etc/extensions/platform_attributes にあるファイルを介してplatform_attributes。このファイルを開くすると、次のテキストが表示されます。
## Edit to change upper cap of total resource limits for all containers. ## applies only to containers and does not apply to container runtimes. ## memory.memsw.limit_in_bytes = EXTENSIONS_MEMORY_MAX_MIB + EXTENSIONS_MEMORY_SWAP_MAX_MIB:-0 ## check current defaults, after starting extensions-cglimits.service ## $ /usr/libexec/extensions/extensions-cglimits get ## please start extensions-cglimits.service to apply changes here ## device size limit will be ignored once extensionsfs device is created #EXTENSIONS_FS_DEVICE_SIZE_MIB= #EXTENSIONS_CPU_QUOTA_PERCENTAGE= #EXTENSIONS_MEMORY_MAX_MIB= #EXTENSIONS_MEMORY_SWAP_MAX_MIB=
コンテナのリソース制限を変更するには、ファイル EXTENSIONS
の一番下にあるエントリーに値を追加します。
EXTENSIONS_FS_DEVICE_SIZE_MIB=
はコンテナが使用できる最大ストレージ スペースを制御します。値をバイト単位で入力します。デフォルト値は、/var の合計サイズの 8GB または 30% で、小さい方を指定します。EXTENSIONS_CPU_QUOTA_PERCENTAGE=
は、コンテナが使用できる CPU の最大使用率を制御します。CPU 使用率の割合として値を入力します。デフォルト値は、すべてのコアで最大 CPU 使用率が 20% です。EXTENSIONS_MEMORY_MAX_MIB=
は、コンテナが使用できる物理メモリの最大量を制御します。値をバイト単位で入力します。デフォルト値は、物理メモリ全体の 2 GB または 10% で、より小さい方を指定します。
コンテナのリソース制限を変更する前に、構成でサポートする必要があるスケールに関する CPU とメモリの要件に注意してください。コンテナのリソース制限を増やすと、システムに負担がかからなから防止するために注意してください。