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