サービスを ID でフィルタリングする
このステップでは、Docker スタック内のサービスのリストを一意の ID に基づいてフィルタリングする方法を学びます。名前でフィルタリングする方が直感的なことが多いですが、ID でフィルタリングすると、絶対的な精度が必要な場合や、似た名前のサービスを扱う場合に便利です。
Docker スタック内の各サービスには一意の ID が割り当てられています。これらの ID は docker stack services
の出力の最初の列に表示されます。
サービス ID でフィルタリングするには、--filter
フラグと id
フィルタを使用します。構文は --filter id=<service_id>
です。サービスを一意に識別するのに十分な ID の接頭辞を提供するだけで済みます。
まず、すべてのサービスを再度リストアップして、それらの ID を取得しましょう。
docker stack services mystack
出力を見て、mystack_web
と mystack_app
サービスの ID を特定します。ID は 16 進数の文字列になります。たとえば、出力は次のようになるかもしれません(あなたの ID は異なります)。
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
yyyyyyyyyyyy mystack_web replicated 1/1 nginx:latest *:80->80/tcp
mystack_web
の ID が yyyyyyyyyyyy
で始まるとしましょう。この ID(またはより短い一意の接頭辞)で次のようにフィルタリングできます。
docker stack services mystack --filter id=yyyyyyyyyyyy
yyyyyyyyyyyy
をあなたの mystack_web
サービスの実際の ID の先頭部分に置き換えてください。
このコマンドは、一致する ID を持つサービスの行のみを表示します。
次のような出力が表示され、mystack_web
サービスのみが表示されるはずです。
ID NAME MODE REPLICAS IMAGE PORTS
yyyyyyyyyyyy mystack_web replicated 1/1 nginx:latest *:80->80/tcp
同様に、mystack_app
サービスの ID でフィルタリングすることもできます。docker stack services mystack
の出力からその ID を見つけて、フィルタに使用します。たとえば、ID が xxxxxxxxxxxx
で始まる場合:
docker stack services mystack --filter id=xxxxxxxxxxxx
xxxxxxxxxxxx
をあなたの mystack_app
サービスの実際の ID の先頭部分に置き換えてください。
これにより、mystack_app
サービスに関する情報が表示されます。
ID NAME MODE REPLICAS IMAGE
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
ID でフィルタリングすることで、特に自動化スクリプトで、または似た名前のサービスを扱う場合に、特定のサービスを正確に対象とすることができます。