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

ラベルに関するより詳しい情報は、 Docker オブジェクト・ラベル をご覧ください。

サービス・モード

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

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

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