質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

docker swarn クラスタがうまく認識されませんでした

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 651

ruuusaamarki

score 452

前提・実現したいこと

docker swarmを使用してクラスタ構成を組んでみたのですが
うまくいかない状態です。

dockerの仮想環境構築入門という書籍の
チュートリアルになります。(p225〜228)
書籍自体は非常にわかりやすいです。

環境

macOS 10.14.4(18E226)
Docker for mac Version 2.0.0.3 (31259)
Docker version 18.09.2, build 6247962

発生している問題・エラーメッセージ

エラーは特にない状態です。
一度自分で間違ってコマンドを打ってしまい
それが原因なのかもと気になっております。

$docker-machine create --swarm --swarm-master\ #★←ここでスペースが入っていなくてオプションが繋がってエラーになってしまった。
> --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-advertise=eth1:2376" \
> mhs-demo0
Incorrect Usage.

Usage: docker-machine create [OPTIONS] [arg...]

Create a machine

Description:
   Run 'docker-machine create --driver name --help' to include the create flags for that driver in the help text.

Options:

   --driver, -d "virtualbox"                                        Driver to create machine with. [$MACHINE_DRIVER]
   --engine-env [--engine-env option --engine-env option]                        Specify environment variables to set in the engine
   --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option]    Specify insecure registries to allow with the created engine
   --engine-install-url "https://get.docker.com"                            Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL]
   --engine-label [--engine-label option --engine-label option]                        Specify labels for the created engine
   --engine-opt [--engine-opt option --engine-opt option]                        Specify arbitrary flags to include with the created engine in the form flag=value
   --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option]        Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR]
   --engine-storage-driver                                         Specify a storage driver to use with the engine
   --swarm                                                Configure Machine to join a Swarm cluster
   --swarm-addr                                             addr to advertise for Swarm (default: detect and use the machine IP)
   --swarm-discovery                                             Discovery service to use with Swarm
   --swarm-experimental                                            Enable Swarm experimental features
   --swarm-host "tcp://0.0.0.0:3376"                                    ip/socket to listen on for Swarm master
   --swarm-image "swarm:latest"                                        Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE]
   --swarm-join-opt [--swarm-join-opt option --swarm-join-opt option]                    Define arbitrary flags for Swarm join
   --swarm-master                                            Configure Machine to be a Swarm master
   --swarm-opt [--swarm-opt option --swarm-opt option]                            Define arbitrary flags for Swarm master
   --swarm-strategy "spread"                                        Define a default scheduling strategy for Swarm
   --tls-san [--tls-san option --tls-san option]                            Support extra SANs for TLS certs
   --virtualbox-boot2docker-url                                     The URL of the boot2docker image. Defaults to the latest available version [$VIRTUALBOX_BOOT2DOCKER_URL]
   --virtualbox-cpu-count "1"                                        number of CPUs for the machine (-1 to use the number of CPUs available) [$VIRTUALBOX_CPU_COUNT]
   --virtualbox-disk-size "20000"                                    Size of disk for host in MB [$VIRTUALBOX_DISK_SIZE]
   --virtualbox-host-dns-resolver                                    Use the host DNS resolver [$VIRTUALBOX_HOST_DNS_RESOLVER]
   --virtualbox-hostonly-cidr "192.168.99.1/24"                                Specify the Host Only CIDR [$VIRTUALBOX_HOSTONLY_CIDR]
   --virtualbox-hostonly-nicpromisc "deny"                                Specify the Host Only Network Adapter Promiscuous Mode [$VIRTUALBOX_HOSTONLY_NIC_PROMISC]
   --virtualbox-hostonly-nictype "82540EM"                                Specify the Host Only Network Adapter Type [$VIRTUALBOX_HOSTONLY_NIC_TYPE]
   --virtualbox-hostonly-no-dhcp                                    Disable the Host Only DHCP Server [$VIRTUALBOX_HOSTONLY_NO_DHCP]
   --virtualbox-import-boot2docker-vm                                     The name of a Boot2Docker VM to import [$VIRTUALBOX_BOOT2DOCKER_IMPORT_VM]
   --virtualbox-memory "1024"                                        Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE]
   --virtualbox-nat-nictype "82540EM"                                    Specify the Network Adapter Type [$VIRTUALBOX_NAT_NICTYPE]
   --virtualbox-no-dns-proxy                                        Disable proxying all DNS requests to the host [$VIRTUALBOX_NO_DNS_PROXY]
   --virtualbox-no-share                                        Disable the mount of your home directory [$VIRTUALBOX_NO_SHARE]
   --virtualbox-no-vtx-check                                        Disable checking for the availability of hardware virtualization before the vm is started [$VIRTUALBOX_NO_VTX_CHECK]
   --virtualbox-share-folder                                         Mount the specified directory instead of the default home location. Format: dir:name [$VIRTUALBOX_SHARE_FOLDER]
   --virtualbox-ui-type "headless"                                    Specify the UI Type: (gui|sdl|headless|separate) [$VIRTUALBOX_UI_TYPE]
flag provided but not defined: -swarm-master--swarm-discovery

実行したコマンド履歴

$ docker-machine create mh-keystore
$ eval $(docker-machine env mh-keystore)
$ docker run -d --name consul -h consul -p 8500:8500 consul agent -server -bootstrap -client 0.0.0.0
$ docker-machine create --swarm --swarm-master--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" mhs-demo0
$ docker-machine create --swarm --swarm-master --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" mhs-demo0
$ docker-machine create --swarm --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" --engine-opt="cluster-advertise=eth1:2376" mhs-demo1
$ eval $(docker-machine env --swarm mhs-demo0)
$ docker-machine ls
NAME          ACTIVE      DRIVER       STATE     URL                         SWARM                DOCKER     ERRORS
host-nw-vm    -           virtualbox   Stopped                                                    Unknown
mh-keystore   -           virtualbox   Running   tcp://192.168.99.100:2376                        v18.09.4
mhs-demo0     * (swarm)   virtualbox   Running   tcp://192.168.99.101:2376   mhs-demo0 (master)   v18.09.4
mhs-demo1     -           virtualbox   Running   tcp://192.168.99.102:2376   mhs-demo0            v18.09.4
$ docker info

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: swarm/1.2.9
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint, whitelist
Nodes: 0
Plugins:
 Volume:
 Network:
 Log:
Swarm:
 NodeID:
 Is Manager: false
 Node Address:
Kernel Version: 4.14.111-boot2docker
Operating System: linux
Architecture: amd64
CPUs: 0
Total Memory: 0B
Name: 3015b117afd4
Docker Root Dir:
Debug Mode (client): false
Debug Mode (server): false
Experimental: false
Live Restore Enabled: false

WARNING: No kernel memory limit support

 調査したこと

WARNING: No kernel memory limit support
というエラーメッセージで検索したところ
git-hubのissueが2件くらいヒットしたのですが
翻訳をかけたところもうバージョンアップにて解決しているというような(解釈が違っているかもしれません)
ことが書かれていました。
https://github.com/docker/for-mac/issues/955
https://github.com/moby/moby/issues/22245

 質問内容

現状、下手にいじるとこじれそうな予感があり
何を確認したら良いかなど、まずは糸口だけでもご教授いただけましたら幸いです。

情報が足りてない場合、わかりにくい部分などはお手数ですが
ご指摘をお願いいたします。
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yoorwm

    2019/04/11 11:47

    見た感じ、うまく行っているような気がするのですが、「何をしてみてうまくいかない」のかを教えてください。

    キャンセル

  • ruuusaamarki

    2019/04/11 11:53

    コメントありがとうございます。
    参考書籍では実行結果が以下のようになります。
    $ docker info

    Containers: 3
    Running: 3
    Paused: 0
    Stopped: 0
    Images: 2
    Server Version: swarm/1.2.9
    Role: primary
    Strategy: spread
    Filters: health, port, containerslots, dependency, affinity, constraint, whitelist
    Nodes: 2

    しかし現在は
    Containers: 0
    Running: 0
    Nodes: 0
    となってしまっている状態です。

    キャンセル

  • yoorwm

    2019/04/11 12:09

    それは書籍の方が間違えているか、その状態の前に何か実行したコマンドがあるのではないでしょうか?
    https://knowledge.sakura.ad.jp/5197/
    swarmモードは使った事が無いので適当に検索してみたページだと、中辺りに
    「この時点ではコンテナを実行させるためのノードを登録していないため、「Nodes」は0になっているはずだ。」
    とありますね?
    まだ、そこに書いてある状態と同じではないでしょうか?

    キャンセル

  • ruuusaamarki

    2019/04/11 12:52

    情報ありがとうございます。
    参考ページのコマンドを実行してみたところ
    $docker -H tcp://192.168.99.101:2376 info
    Containers: 2
    Running: 2
    という表示がされました。

    おっしゃる通り何か実行してしまったのかもしれません。

    キャンセル

回答 1

checkベストアンサー

0

入力されているコマンドそのものは、画面上なんら問題ないように見えます。実際、私のDocker for Macの環境上でもコマンドを実行しましたが、特にエラーはありませんでした(VirtualBoxは入れていないため、その警告は出ました)。

さて、実行できない原因ですが、画面上に2つのエラーらしき表示が出ています。

Incorrect Usage.
flag provided but not defined: -swarm-master--swarm-discovery
この2つです。

表示されているメッセージから、入力されている構文が違っていそうです。-swarm-master--swarm-discoveryというオプションが指定されていたものの、該当するオプションは存在せず、エラーになっているように見えます。

もう一度、コマンドを確実に実行されなおしてみてはいかがでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/29 14:51

    ご回答ありがとうございます!

    ご指摘いただいたオプションを調査してみます。
    もう一度マシーンから立て直した方が良さそうなので
    今度は確実に実行するようにやってみます。

    また質問が出ましたら改めて建てさせていただきます。
    ありがとうございました!

    キャンセル

  • 2019/05/27 08:20

    一度全てのマシーンを削除して作成し直したら想定通りの動きになりました!
    ご指摘の通り構文の間違いなどで予期せぬ動きになってしまったのかもしれません。
    ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る