service create

使い方: docker service create [オプション] イメージ [コマンド][引数...]新しいサービスの作成(create)
オプション: --constraint value 制約(constraints)の設定 (デフォルト []) --endpoint-mode string エンドポイント・モード(有効な値: VIP, DNSRR) -e, --env value 環境変数の設定 (デフォルト []) --help 使い方の表示 -l, --label value サービス・ラベル (デフォルト []) --limit-cpu value CPU 上限 (デフォルト 0.000) --limit-memory value メモリ上限 (デフォルト 0 B) --mode string サービス・モード (replicated または global)(デフォルト "replicated") -m, --mount value サービスに対するマウントをアタッチ --name string サービス名 --network value ネットワークのアタッチ (デフォルト []) -p, --publish value ノード・ポートとしてポートを公開 (デフォルト []) --replicas value タスク数 (デフォルト none) --reserve-cpu value リザーブ CPU (デフォルト 0.000) --reserve-memory value リザーブ・メモリ (デフォルト 0 B) --restart-condition string 状況変更時に再起動 (none, on_failure, any) --restart-delay value 再起動を試みるまでの遅延 (デフォルト none) --restart-max-attempts value 再起動を諦める最大数 (デフォルト none) --restart-window value 再起動ポリシーの評価に使うウインドウ (デフォルト none) --stop-grace-period value 強制的にコンテナを kill するまで待つ時間 (デフォルト none) --update-delay duration 更新までの遅延 --update-parallelism uint 同時更新する最大タスク数 -u, --user string ユーザ名か UID -w, --workdir string コンテナ内のワーキング(作業用)・ディレクトリ

パラメータで指定を記述した通りに、サービスを作成します。このコマンドの実行対象はマネージャ・ノードです。

サービスの作成

$ docker service create --name redis redis:3.0.6
dmu1ept4cxcfe8k8lhtux3ro3
$ docker service ls
ID NAME REPLICAS IMAGE COMMAND
dmu1ept4cxcf redis 1/1 redis:3.0.6

5つのタスクを持つサービスの作成

サービス用のタスク数を --replicas オプションで指定できます。次のコマンドは 5 つのタスクを持つ redis サービスを作成します。

$ docker service create --name redis --replicas=5 redis:3.0.6
4cdgfyky7ozwh3htjfw0d12qv

このコマンドはサービス用タスクの期待数(desired number)を指定します。コマンド実行はすぐに応答しますが(戻りますが)、実際にサービスがスケールするには時間がかかるでしょう。 REPLICAS (レプリカ)列に表示されるのは、サービス用タスクの実際の数と期待数です。

この例では、タスクの期待数を 5 に指定しましたが、実際の数は 3 です。

$ docker service ls
ID NAME REPLICAS IMAGE COMMAND
4cdgfyky7ozw redis 3/5 redis:3.0.7

すべてのタスクを作成したら、実際の数は期待数と同じになります。

$ docker service ls
ID NAME REPLICAS IMAGE COMMAND
4cdgfyky7ozw redis 5/5 redis:3.0.7

ローリング・アップデート制約を持つサービスの作成

$ docker service create \ --replicas 10\ --name redis \ --update-delay 10s \ --update-parallelism 2\ redis:3.0.6

このサービスを 更新時 、ローリング・アップデートはタスクを 2 つの束(バッチ)に分け、束の更新間隔を 10s (10秒)にします。

環境変数の指定( -e--env

サービス内の全てのタスク用の環境変数を指定します。例:

$ docker service create --name redis_2 --replicas 5 --env MYVAR=foo redis:3.0.6

サービスのメタデータを指定( -l--label

ラベルとは キー=値 のペアでアリ、サービス用のメタデータを指定します。サービスに2つのラベルを指定するには、次のようにします。

$ docker service create \ --name redis_2 \ --label com.example.foo="bar" --label bar=baz \ redis:3.0.6

ラベルに関するより詳しい情報は、 /engine/userguide/labels-custom-metadata をご覧ください。

サービス・モード

複製サービス(replicated service)かグローバル・サービス(global service)です。複製サービスは指定した数のタスクを実行するのに対し、グローバル・サービスは swarm 上の各アクティブ・ノード上で実行します。

次のコマンドは「グローバル」サービスを作成します。

$ docker service create --name redis_2 --mode global redis:3.0.6

関連情報