Docker で Zookeeper をインストールする (スタンドアロンおよびクラスター)

Docker で Zookeeper をインストールする (スタンドアロンおよびクラスター)

Docker を起動したら、利用できるオプションを見てみましょう。

公式のものがある場合は、もちろん公式のものを選択してください。

ダウンロード:

[root@localhost admin]# docker pull zookeeper
デフォルトタグの使用: 最新
リポジトリ docker.io/library/zookeeper をプルしようとしています...
最新: docker.io/library/zookeeper からプル
1ab2bdfe9778: すでに存在します
7aaf9a088d61: プル完了
80a55c9c9fe8: プル完了
a0086b0e6eec: プル完了
4165e7457cad: プル完了
bcba13bcf3a1: プル完了
41c03a109e47: プル完了
4d5281c6b0d4: プル完了
ダイジェスト: sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed
ステータス: docker.io/zookeeper:latest の新しいイメージをダウンロードしました

画像の詳細を見る

[root@localhost admin]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
192.168.192.128:443/hello-2 最新 0c24558dd388 42 時間前 660 MB
192.168.192.128:443/hello 最新 a3ba3d430bed 42 時間前 660 MB
docker.io/nginx 最新 5a3221f0137b 13 日前 126 MB
docker.io/zookeeper 最新 3487af26dee9 13日前 225 MB
docker.io/registry 最新 f32a97de94e1 5 か月前 25.8 MB
docker.io/mongo 最新 8bf72137439e 12 か月前 380 MB
docker.io/influxdb 最新 34de2bdc2d7f 12 か月前 213 MB
docker.io/centos 最新 5182e96772bf 12 か月前 200 MB
docker.io/grafana/grafana 最新 3e16e05be9a3 13 か月前 245 MB
docker.io/hello-world 最新 2cb0d9787c4d 13 か月前 1.85 kB
docker.io/java 最新 d23bdf5b1b1b 2年前 643 MB
[root@localhost admin]# docker 検査 3487af26dee9
[
  {
    「ID」: 「sha256:3487af26dee9ef9eacee9a97521bc4f0243bef0b285247258c32f4a03cab92c5」、
    「リポジトリタグ」: [
      「docker.io/zookeeper:最新」
    ]、
    「レポダイジェスト」: [
      docker.io/zookeeper@sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed を参照してください
    ]、
    "親": ""、
    "コメント": ""、
    「作成日」: 「2019-08-15T06:10:50.178554969Z」、
    「コンテナ」: 「9a38467115f1952161d6075135d5c5287967282b834cfe68183339c810f9652b」、
    「コンテナ構成」: {
      "ホスト名": "9a38467115f1",
      "ドメイン名": "",
      "ユーザー": "",
      "AttachStdin": false、
      "AttachStdout": false、
      "AttachStderr": false、
      「公開ポート」: {
        "2181/tcp": {},
        "2888/tcp": {},
        "3888/tcp": {},
        "8080/tcp": {}
      },
      「端末」: 偽、
      "OpenStdin": 偽、
      "StdinOnce": false、
      「環境」: [
        "PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin",
        "LANG=C.UTF-8",
        "JAVA_HOME=/usr/local/openjdk-8",
        "JAVA_VERSION=8u222",
        "JAVA_BASE_URL=https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_",
        "JAVA_URL_VERSION=8u222b10"、
        "ZOO_CONF_DIR=/conf",
        "ZOO_DATA_DIR=/データ",
        "ZOO_DATA_LOG_DIR=/データログ",
        "ZOO_LOG_DIR=/logs",
        "ZOO_TICK_TIME=2000",
        "ZOO_INIT_LIMIT=5",
        "ZOO_SYNC_LIMIT=2",
        "ZOO_AUTOPURGE_PURGEINTERVAL=0",
        "ZOO_AUTOPURGE_SNAPRETAINCOUNT=3",
        "ZOO_MAX_CLIENT_CNXNS=60",
        "ZOO_STANDALONE_ENABLED=true",
        "ZOO_ADMINSERVER_ENABLED=true",
        "ZOOCFGDIR=/conf"
      ]、
      「コマンド」: [
        "/bin/sh",
        "-c",
        "#(nop) "、
        「CMD [\"zkServer.sh\" \"フォアグラウンド開始\"]」
      ]、
      "ArgsEscaped": true、
      「画像」: 「sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e」、
      「ボリューム」: {
        "/データ": {}、
        "/データログ": {},
        "/ログ": {}
      },
      "作業ディレクトリ": "/apache-zookeeper-3.5.5-bin",
      「エントリポイント」: [
        「/docker-entrypoint.sh」
      ]、
      "OnBuild": null、
      「ラベル」: {}
    },
    "Dockerバージョン": "18.06.1-ce",
    "著者": ""、
    「設定」: {
      "ホスト名": "",
      "ドメイン名": "",
      "ユーザー": "",
      "AttachStdin": false、
      "AttachStdout": false、
      "AttachStderr": false、
      「公開ポート」: {
        "2181/tcp": {},
        "2888/tcp": {},
        "3888/tcp": {},
        "8080/tcp": {}
      },
      「端末」: 偽、
      "OpenStdin": 偽、
      "StdinOnce": false、
      「環境」: [
        "PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin",
        "LANG=C.UTF-8",
        "JAVA_HOME=/usr/local/openjdk-8",
        "JAVA_VERSION=8u222",
        "JAVA_BASE_URL=https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_",
        "JAVA_URL_VERSION=8u222b10"、
        "ZOO_CONF_DIR=/conf",
        "ZOO_DATA_DIR=/データ",
        "ZOO_DATA_LOG_DIR=/データログ",
        "ZOO_LOG_DIR=/logs",
        "ZOO_TICK_TIME=2000",
        "ZOO_INIT_LIMIT=5",
        "ZOO_SYNC_LIMIT=2",
        "ZOO_AUTOPURGE_PURGEINTERVAL=0",
        "ZOO_AUTOPURGE_SNAPRETAINCOUNT=3",
        "ZOO_MAX_CLIENT_CNXNS=60",
        "ZOO_STANDALONE_ENABLED=true",
        "ZOO_ADMINSERVER_ENABLED=true",
        "ZOOCFGDIR=/conf"
      ]、
      「コマンド」: [
        "zkServer.sh",
        「フォアグラウンド開始」
      ]、
      "ArgsEscaped": true、
      「画像」: 「sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e」、
      「ボリューム」: {
        "/データ": {}、
        "/データログ": {},
        "/ログ": {}
      },
      "作業ディレクトリ": "/apache-zookeeper-3.5.5-bin",
      「エントリポイント」: [
        「/docker-entrypoint.sh」
      ]、
      "OnBuild": null、
      「ラベル」: null
    },
    「アーキテクチャ」: 「amd64」、
    "OS": "Linux",
    「サイズ」: 225126346,
    "仮想サイズ": 225126346,
    "グラフドライバー": {
      "名前": "オーバーレイ2",
      "データ": {
        「Lowerdir」: "/var/lib/docker/overlay2/92185EBF7638A7B34180CFB87795DD758405CBAD4FD0139B92A2227D1A4B61847/DIFF://LIB/DOCKER/DOCKER/DOCKER/877E91F 72019ECA49A0402A0902BE39ED0B5D651A79CCE35/DIFF:/VAR/LIB/DOCKER/OVERLAY2/CE5864DDFA4D1478047AA9FCAA03744E8A8443B41E841E7841E841E841E841ECALES :/var/lib/docker/overlay2/fc99437bcfbabb9e8234c06c90d1c60e58c34ac053aff1adc368b7ad3a50c158/差分6D6797332FD07B863A1B48DCB6FA2/DIFF:/VAR/LIB/DOCKER/OVERLAY2/EE735AA3608D890AC4751DDD93581A67CB54A5DD4714081E9D09D09D09D09D09D09D09D09D09D0EBD9501/LIDBD9501 ER/OVERLAY2/CF6B3CBC42F3C8D1FB09B29DB0DAFBB4DCEB120925970AB8A3871EAA8562414C/DIFF "、
        "マージされたディレクトリ": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/マージ済み",
        「上位ディレクトリ」: 「/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/diff」、
        "作業ディレクトリ": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/work"
      }
    },
    「ルートFS」: {
      「タイプ」:「レイヤー」、
      「レイヤー」: [
        "sha256:1c95c77433e8d7bf0f519c9d8c9ca967e2603f0defbf379130d9a841cca2e28e",
        "sha256:2bf534399acac9c6b09a0b1d931223808000b04400a749f08187ed9ee435738d",
        "sha256:eb25e0278d41b9ac637d8cb2e391457cf44ce8d2bfe0646d0c9faefc96413f91",
        "sha256:e54bd3566d9ef3e1309a5af6caf8682f32c6ac4d6adfcbd3e601cfee4e2e0e85",
        "sha256:c79435051d529a7b86f5f9fc32e7e2ec401929434e5596f02a2af731f55c9f28",
        "sha256:76e0d7b2d700e6d17924b985703c7b5b84fb39ddcc0a1181b41217c2a11dffc4",
        "sha256:eecdc37df6afd77091641588f9639f63b65e8eb141e56529e00da44419c5bd04",
        「sha256:36e788f2d91a89375df5901f31cca33776f887c00ddfd3cf9f2466fa4cb794d6」
      ]
    }
  }
]

デフォルトのプルは最新バージョン3.5.Xです。バージョン3.4.Xが必要な場合は、タグを指定する必要があります。

単一マシン

# 最後はイメージIDです [root@localhost admin]# docker run -d -p 2181:2181 --name some-zookeeper --restart always 3487af26dee9
d5c6f857cd88c342acf63dd58e838a4cdf912daa6c8c0115091147136e819307
[root@localhost admin]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
d5c6f857cd88 3487af26dee9 "/docker-entrypoint..." 4 秒前 3 秒前にアップ 2888/tcp、3888/tcp、0.0.0.0:2181->2181/tcp、8080/tcp some-zookeeper
[root@localhost admin]# docker exec -it d5c6f857cd88 bash
ルート@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
localhost:2181に接続しています
2019-08-29 07:15:21,623 [myid:] - INFO [main:Environment@109] - クライアント環境:zookeeper.version=3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653、2019/05/03 12:07 GMT に構築
2019-08-29 07:15:21,679 [myid:] - INFO [main:Environment@109] - クライアント環境:host.name=d5c6f857cd88
2019-08-29 07:15:21,680 [myid:] - INFO [main:Environment@109] - クライアント環境:java.version=1.8.0_222
2019-08-29 07:15:21,717 [myid:] - INFO [main:Environment@109] - クライアント環境:java.vendor=Oracle Corporation
2019-08-29 07:15:21,718 [myid:] - INFO [main:Environment@109] - クライアント環境:java.home=/usr/local/openjdk-8
2019-08-29 07:15:21,725 ​​[myid:] - INFO [main:Environment@109] - Client environment:java.class.path=/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.5.5-bin/bin/../build/classes:/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/lib/*.jar:/apache-zookeeper-3.5.5-bin/bin/../build/lib/*.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/zookeeper-jute-3.5.5.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/zookeeper-3.5.5.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/slf4j-log4j12-1.7.25.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/slf4j-api-1.7.25.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/netty-all-4.1.29.Final.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/log4j-1.2.17.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/json-simple-1.1.1.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jline-2.11.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-util-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-servlet-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-server-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-security-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-io-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-http-9.4.17.v20190418.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-databind-2.9.8.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-core-2.9.8.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-annotations-2.9.0.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/commons-cli-1.2.jar:/apache-zookeeper-3.5.5-bin/bin/../lib/audience-annotations-0.5.0.jar:/apache-zookeeper-3.5.5-bin/bin/../zookeeper-*.jar:/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/conf:
2019-08-29 07:15:22,108 [myid:] - INFO [main:Environment@109] - クライアント環境:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - クライアント環境:java.io.tmpdir=/tmp
2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - クライアント環境:java.compiler=<NA>
2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - クライアント環境:os.name=Linux
2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - クライアント環境:os.arch=amd64
2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - クライアント環境:os.version=3.10.0-862.9.1.el7.x86_64
2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - クライアント環境:user.name=root
2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - クライアント環境:user.home=/root
2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - クライアント環境:user.dir=/apache-zookeeper-3.5.5-bin
2019-08-29 07:15:22,118 [myid:] - INFO [main:Environment@109] - クライアント環境:os.memory.free=11MB
2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - クライアント環境:os.memory.max=247MB
2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - クライアント環境:os.memory.total=15MB
2019-08-29 07:15:22,206 [myid:] - INFO [main:ZooKeeper@868] - クライアント接続を開始しています。connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3b95a09c
2019-08-29 07:15:22,239 [myid:] - INFO [main:X509Util@79] - クライアントが開始する TLS 再ネゴシエーションを無効にするには、-D jdk.tls.rejectClientInitiatedRenegotiation=true を設定します
2019-08-29 07:15:22,285 [myid:] - INFO [main:ClientCnxnSocket@237] - jute.maxbuffer の値は 4194304 バイトです
2019-08-29 07:15:22,366 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout の値は 0 です。機能が有効になっています=
ZooKeeper へようこそ!
JLineサポートが有効になっています
2019-08-29 07:15:22,563 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - サーバー localhost/0:0:0:0:0:0:0:1:2181 へのソケット接続を開いています。SASL を使用して認証を試行しません (不明なエラー)
2019-08-29 07:15:23,443 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - ソケット接続が確立されました。セッションを開始しています。クライアント: /0:0:0:0:0:0:0:1:37198、サーバー: localhost/0:0:0:0:0:0:0:1:2181
2019-08-29 07:15:23,520 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - サーバー localhost/0:0:0:0:0:0:0:1:2181 でセッションの確立が完了しました。セッション ID = 0x10001216d990000、ネゴシエートされたタイムアウト = 30000
 
ウォッチャー::
 
WatchedEvent 状態:SyncConnected タイプ:None パス:null
[zk:localhost:2181(接続済み) 0] ls /
[動物園の飼育員]
[zk: localhost:2181(接続済み) 1] 終了
 
ウォッチャー::
 
WatchedEvent 状態:Closed タイプ:None パス:null
2019-08-29 07:15:37,042 [myid:] - INFO [main:ZooKeeper@1422] - セッション: 0x10001216d990000 が終了しました
2019-08-29 07:15:37,043 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - セッションのイベントスレッドがシャットダウンされました: 0x10001216d990000
root@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# 終了
出口
[root@localhost 管理者]#

外部アクセス (192.168.192.128:2181)

クラスタ

環境: 単一のホスト マシン (192.168.192.128)、3 つの Zookeeper コンテナーを起動します。

ここで問題となるのは、Docker コンテナ間の通信です。これは非常に重要です。

Docker には、bridge、host、none の 3 つのネットワーク モードがあります。コンテナーを作成するときに --network を指定しない場合は、デフォルトは bridge になります。

bridge: 各コンテナに IP を割り当て、コンテナを docker0 仮想ブリッジに接続して、docker0 ブリッジを介してホストと通信します。つまり、このモードでは、ホスト IP + コンテナ マッピング ポートを使用して Docker コンテナ間で通信することはできません。

ホスト: コンテナーは独自のネットワーク カードを仮想化せず、独自の IP を構成しませんが、ホスト マシンの IP とポートを使用します。このようにして、Dockerコンテナ間の通信はホストIP + コンテナマッピングポートを使用することができます

none: ネットワークなし。

=====================================================

まずローカルにディレクトリを作成します。

[root@localhost admin]# mkdir /usr/local/zookeeper-cluster
[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node1
[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node2
[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node3
[root@localhost admin]# ll /usr/local/zookeeper-cluster/
合計 0
drwxr-xr-x. 2 ルート ルート 6 8月 28 23:02 node1
drwxr-xr-x. 2 ルート ルート 6 8月 28 23:02 node2
drwxr-xr-x. 2 ルート ルート 6 8月 28 23:02 node3

次にコマンドを実行して開始します

docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node1 --privileged --restart always \
-v /usr/local/zookeeper-cluster/node1/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node1/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9

docker run -d -p 2182:2181 -p 2889:2888 -p 3889:3888 --name zookeeper_node2 --privileged --restart always \
-v /usr/local/zookeeper-cluster/node2/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node2/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9

docker run -d -p 2183:2181 -p 2890:2888 -p 3890:3888 --name zookeeper_node3 --privileged --restart always \
-v /usr/local/zookeeper-cluster/node3/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node3/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9

【ピット】

一見、何も問題はありません。まず、ポートをホスト マシンにマップし、3 つの Zookeeper 間のアクセス アドレスは、ホスト マシンの IP: マップされたポートになります。何も問題はありません。

先ほど述べたネットワークモードを見れば問題が分かります。ZOO_SERVERS の IP に問題があります。このミスをする人は Docker のネットワークモードを理解していません。何が問題なのでしょうか? 以下を参照してください。

ZOO_SERVERSについて

これは何を意味しますか? 3.5.0 以降では、clientPort および clientPortAddress 構成パラメータは使用されなくなりました。代わりに、この情報はサーバー キーワード仕様の一部になりました。

3 つのコンテナのポート マッピングは、2181/2182/2183 のように異なります。ホスト マシンなので、ポートが競合することはありません。同じマシンでない場合は、ポートを変更する必要はありません。

最後のパラメータはイメージ ID ですが、イメージ名 (TAG) にすることもできます。

--privileged=trueパラメータは[chown: '/data'の所有権を変更しています: 権限が拒否されました]を解決するためのものですが、trueを省略することもできます。

実行結果:

[root@localhost admin]# docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node1 --privileged --restart always \
> -v /usr/local/zookeeper-cluster/node1/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node1/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node1/volumes/logs:/logs \
> -e ZOO_MY_ID=1 \
> -e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9
4bfa6bbeb936037e178a577e5efbd06d4a963e91d67274413b933fd189917776
[root@localhost admin]# docker run -d -p 2182:2181 -p 2889:2888 -p 3889:3888 --name zookeeper_node2 --privileged --restart always \
> -v /usr/local/zookeeper-cluster/node2/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node2/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node2/volumes/logs:/logs \
> -e ZOO_MY_ID=2 \
> -e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9
dbb7f1f323a09869d043152a4995e73bad5f615fd81bf11143fd1c28180f9869
[root@localhost admin]# docker run -d -p 2183:2181 -p 2890:2888 -p 3890:3888 --name zookeeper_node3 --privileged --restart always \
> -v /usr/local/zookeeper-cluster/node3/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node3/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node3/volumes/logs:/logs \
> -e ZOO_MY_ID=3 \
> -e "ZOO_SERVERS=server.1=192.168.192.128:2888:3888;2181 server.2=192.168.192.128:2889:3889;2182 server.3=192.168.192.128:2890:3890;2183" 3487af26dee9
6dabae1d92f0e861cc7515c014c293f80075c2762b254fc56312a6d3b450a919
[root@localhost 管理者]#

起動したコンテナを表示する

[root@localhost admin]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
0:3890->3888/tcp zookeeper_node3 6dabae1d92f0 3487af26dee9 "/docker-entrypoin..." 31 秒前 29 秒前に起動 8080/tcp、0.0.0.0:2183->2181/tcp、0.0.0.0:2890->2888/tcp、0.0.0.0:3890->3888/tcp zookeeper_node3
dbb7f1f323a0 3487af26dee9 "/docker-entrypoint..." 36 秒前 35 秒前にアップ 8080/tcp、0.0.0.0:2182->2181/tcp、0.0.0.0:2889->2888/tcp、0.0.0.0:3889->3888/tcp zookeeper_node2
4bfa6bbeb936 3487af26dee9 "/docker-entrypoin..." 46 秒前 45 秒前に起動 0.0.0.0:2181->2181/tcp、0.0.0.0:2888->2888/tcp、0.0.0.0:3888->3888/tcp、8080/tcp zookeeper_node1
[root@localhost 管理者]#

間違いがあると言われているんじゃないの?どうしてうまく始まったのでしょうか? ?ノード1の起動ログを見てみましょう

[root@localhost admin]# docker ログ -f 4bfa6bbeb936
ZooKeeper JMX はデフォルトで有効になっています

...

2019-08-29 09:20:22,665 [myid:1] - 警告 [WorkerSender[myid=1]:QuorumCnxManager@677] - 選出アドレス /192.168.192.128:3889 で 2 へのチャネルを開くことができません
java.net.ConnectException: 接続が拒否されました (接続が拒否されました)
  java.net.PlainSocketImpl.socketConnect(ネイティブメソッド)
  java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) で
  java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) で
  java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) で
  java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) で
  java.net.Socket.connect(Socket.java:589) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:618) で
  org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477) で
  org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456) で
  java.lang.Thread.run(Thread.java:748) で
2019-08-29 09:20:22,666 [myid:1] - 警告 [WorkerSender[myid=1]:QuorumCnxManager@677] - 選出アドレス /192.168.192.128:3890 で 3 へのチャネルを開くことができません
java.net.ConnectException: 接続が拒否されました (接続が拒否されました)
  java.net.PlainSocketImpl.socketConnect(ネイティブメソッド)
  java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) で
  java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) で
  java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) で
  java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) で
  java.net.Socket.connect(Socket.java:589) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705) で
  org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:618) で
  org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477) で
  org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456) で
  java.lang.Thread.run(Thread.java:748) で

2 と 3 に接続できません。なぜでしょうか? デフォルトの Docker ネットワーク モードでは、ホスト マシンの IP + マッピングされたポートがまったく見つからないためです。独自の IP を持っています!次のように:

[root@localhost admin]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
6dabae1d92f0 3487af26dee9 "/docker-entrypoin..." 5 分前 5 分前にアップ 8080/tcp、0.0.0.0:2183->2181/tcp、0.0.0.0:2890->2888/tcp、0.0.0.0:3890->3888/tcp zookeeper_node3
dbb7f1f323a0 3487af26dee9 "/docker-entrypoin..." 6 分前 6 分前にアップ 8080/tcp、0.0.0.0:2182->2181/tcp、0.0.0.0:2889->2888/tcp、0.0.0.0:3889->3888/tcp zookeeper_node2
4bfa6bbeb936 3487af26dee9 "/docker-entrypoin..." 6 分前 6 分前にアップ 0.0.0.0:2181->2181/tcp、0.0.0.0:2888->2888/tcp、0.0.0.0:3888->3888/tcp、8080/tcp zookeeper_node1


[root@localhost admin]# docker 検査 4bfa6bbeb936
      「ネットワーク」: {
        "橋": {
          "IPAMConfig": null、
          「リンク」:null、
          「エイリアス」: null、
          "ネットワークID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "エンドポイントID": "368237e4c903cc663111f1fe33ac4626a9100fb5a22aec85f5eccbc6968a1631",
          「ゲートウェイ」: 「172.17.0.1」、
          "IPアドレス": "172.17.0.2",
          "IPプレフィックス長": 16,
          "IPv6ゲートウェイ": "",
          "グローバルIPv6アドレス": "",
          "グローバルIPv6プレフィックス長": 0,
          "Macアドレス": "02:42:ac:11:00:02"
        }
      }
    }
  }
]

[root@localhost admin]# docker examine dbb7f1f323a0 を実行します。
      「ネットワーク」: {
        "橋": {
          "IPAMConfig": null、
          「リンク」:null、
          「エイリアス」: null、
          "ネットワークID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "エンドポイントID": "8a9734044a566d5ddcd7cbbf6661abb2730742f7c73bd8733ede9ed8ef106659",
          「ゲートウェイ」: 「172.17.0.1」、
          "IPアドレス": "172.17.0.3",
          "IPプレフィックス長": 16,
          "IPv6ゲートウェイ": "",
          "グローバルIPv6アドレス": "",
          "グローバルIPv6プレフィックス長": 0,
          "Macアドレス": "02:42:ac:11:00:03"
        }
      }
    }
  }
]

[root@localhost admin]# docker 検査 6dabae1d92f0
      「ネットワーク」: {
        "橋": {
          "IPAMConfig": null、
          「リンク」:null、
          「エイリアス」: null、
          "ネットワークID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "エンドポイントID": "b10329b9940a07aacb016d8d136511ec388de02bf3bd0e0b50f7f4cbb7f138ec",
          「ゲートウェイ」: 「172.17.0.1」、
          "IPアドレス": "172.17.0.4",
          "IPプレフィックス長": 16,
          "IPv6ゲートウェイ": "",
          "グローバルIPv6アドレス": "",
          "グローバルIPv6プレフィックス長": 0,
          "Macアドレス": "02:42:ac:11:00:04"
        }
      }
    }
  }
]

ノード1---172.17.0.2
ノード2---172.17.0.3
ノード3---172.17.0.4

独自の IP があることがわかったので、別の問題が発生します。つまり、その IP は動的であり、開始する前にそれを知ることはできません。 1 つの解決策は、独自のブリッジ ネットワークを作成し、コンテナーを作成するときに IP を指定することです。

[正しい方法で始めましょう]

[root@localhost admin]# docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
8257c501652a214d27efdf5ef71ff38bfe222c3a2a7898be24b8df9db1fb3b13
[root@localhost admin]# docker ネットワーク ls
ネットワーク ID 名前 ドライバー スコープ
5fc1ce4362af ブリッジ ブリッジ ローカル
6aa33e21444e ホスト ホスト ローカル
20e563b93ce9 なし null ローカル
8257c501652a ズーネットブリッジローカル
[root@localhost admin]# docker ネットワーク検査 8257c501652a
[
  {
    「名前」: 「ズーネット」、
    「ID」: 「8257c501652a214d27efdf5ef71ff38bfe222c3a2a7898be24b8df9db1fb3b13」、
    「作成日」: 「2019-08-29T06:08:01.442601483-04:00」、
    「スコープ」:「ローカル」、
    「ドライバー」:「ブリッジ」、
    「IPv6を有効にする」:false、
    「IPAM」: {
      "ドライバー": "デフォルト",
      「オプション」: {},
      「設定」: [
        {
          「サブネット」: 「172.18.0.0/16」、
          「ゲートウェイ」: 「172.18.0.1」
        }
      ]
    },
    「内部」:偽、
    「接続可能」: false、
    「コンテナ」: {},
    「オプション」: {},
    「ラベル」: {}
  }
]

次に、Zookeeper コンテナの作成コマンドを変更します。

docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --restart always --network zoonet --ip 172.18.0.2 \
-v /usr/local/zookeeper-cluster/node1/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node1/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9

docker run -d -p 2182:2181 --name zookeeper_node2 --privileged --restart always --network zoonet --ip 172.18.0.3 \
-v /usr/local/zookeeper-cluster/node2/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node2/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9

docker run -d -p 2183:2181 --name zookeeper_node3 --privileged --restart always --network zoonet --ip 172.18.0.4 \
-v /usr/local/zookeeper-cluster/node3/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node3/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9

1. 2888 と 3888 は公開する必要がないため、マッピングされません。

2. 独自のネットワークと IP を指定します。

3. 各コンテナ間の環境は分離されているため、コンテナ内で使用されるポートは同じです: 2181/2888/3888

実行結果:

[root@localhost admin]# docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --restart always --network zoonet --ip 172.18.0.2 \
> -v /usr/local/zookeeper-cluster/node1/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node1/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node1/volumes/logs:/logs \
> -e ZOO_MY_ID=1 \
> -e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9
50c07cf11fab2d3b4da6d8ce48d8ed4a7beaab7d51dd542b8309f781e9920c36
[root@localhost admin]# docker run -d -p 2182:2181 --name zookeeper_node2 --privileged --restart always --network zoonet --ip 172.18.0.3 \
> -v /usr/local/zookeeper-cluster/node2/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node2/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node2/volumes/logs:/logs \
> -e ZOO_MY_ID=2 \
> -e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9
649a4dbfb694504acfe4b8e11b990877964477bb41f8a230bd191cba7d20996f
[root@localhost admin]# docker run -d -p 2183:2181 --name zookeeper_node3 --privileged --restart always --network zoonet --ip 172.18.0.4 \
> -v /usr/local/zookeeper-cluster/node3/volumes/data:/data \
> -v /usr/local/zookeeper-cluster/node3/volumes/datalog:/datalog \
> -v /usr/local/zookeeper-cluster/node3/volumes/logs:/logs \
> -e ZOO_MY_ID=3 \
> -e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 3487af26dee9
c8bc1b9ae9adf86e9c7f6a3264f883206c6d0e4f6093db3200de80ef39f57160
[root@localhost admin]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
c8bc1b9ae9ad 3487af26dee9 "/docker-entrypoin..." 17 秒前 16 秒前に起動 2888/tcp、3888/tcp、8080/tcp、0.0.0.0:2183->2181/tcp zookeeper_node3
649a4dbfb694 3487af26dee9 "/docker-entrypoint..." 22 秒前 21 秒前にアップ 2888/tcp、3888/tcp、8080/tcp、0.0.0.0:2182->2181/tcp zookeeper_node2
50c07cf11fab 3487af26dee9 "/docker-entrypoint..." 33 秒前 32 秒前にアップ 2888/tcp、3888/tcp、0.0.0.0:2181->2181/tcp、8080/tcp zookeeper_node1
[root@localhost 管理者]#

確認するコンテナを入力してください:

[root@localhost admin]# docker exec -it 50c07cf11fab bash
root@50c07cf11fab:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh ステータス
ZooKeeper JMX はデフォルトで有効になっています
使用設定: /conf/zoo.cfg
見つかったクライアント ポート: 2181。クライアント アドレス: localhost。
モード: フォロワー
root@50c07cf11fab:/apache-zookeeper-3.5.5-bin# 終了
出口
[root@localhost admin]# docker exec -it 649a4dbfb694 bash
root@649a4dbfb694:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh ステータス
ZooKeeper JMX はデフォルトで有効になっています
使用設定: /conf/zoo.cfg
見つかったクライアント ポート: 2181。クライアント アドレス: localhost。
モード: リーダー
root@649a4dbfb694:/apache-zookeeper-3.5.5-bin# 終了
出口
[root@localhost admin]# docker exec -it c8bc1b9ae9ad bash
root@c8bc1b9ae9ad:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh ステータス
ZooKeeper JMX はデフォルトで有効になっています
使用設定: /conf/zoo.cfg
見つかったクライアント ポート: 2181。クライアント アドレス: localhost。
モード: フォロワー
root@c8bc1b9ae9ad:/apache-zookeeper-3.5.5-bin# 終了
出口
[root@localhost 管理者]#

ノードの作成を確認する

外部アクセス用にファイアウォールを開く

ファイアウォールコマンド --zone=public --add-port=2181/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=2182/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=2183/tcp --permanent
systemctl ファイアウォールを再起動します
ファイアウォールコマンド --list-all

ローカルでは、Zookeeper クライアントを使用して仮想マシン上のクラスターに接続します。

接続が成功したことがわかります!

クラスターのインストール方法 2: docker stack deploy または docker-compose によるインストール

ここでは docker-compose を使用します。まずdocker-composeをインストールします

[root@localhost admin]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 % 合計 % 受信 % 転送 平均速度 時間 時間 時間 現在
                 ダウンロード アップロード 合計使用時間 残り 速度
100 617 0 617 0 0 145 0 --:--:-- 0:00:04 --:--:-- 145
100 15.4M 100 15.4M 0 0 131k 0 0:02:00 0:02:00 --:--:-- 136k
[root@localhost admin]# chmod +x /usr/local/bin/docker-compose

バージョンを確認する(インストールが成功したかどうかを確認するため)

[root@localhost admin]# docker-compose --version
docker-compose バージョン 1.24.1、ビルド 4667896b

アンインストールした場合

rm /usr/local/bin/docker-compose

設定を開始し、3つの新しいマウントディレクトリを作成します

[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node4
[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node5
[root@localhost admin]# mkdir /usr/local/zookeeper-cluster/node6

新しいディレクトリを作成し、その中に新しいファイルを作成します

[root@localhost admin]# mkdir DockerComposeFolder
[root@localhost admin]# cd DockerComposeFolder/
[root@localhost DockerComposeFolder]# vim docker-compose.yml

ファイルの内容は次のとおりです: (カスタム ネットワークについては上記を参照)

バージョン: '3.1'

サービス:
 動物園1:
  画像: 動物園の飼育係
  再起動: 常に
  特権: true
  ホスト名: zoo1
  ポート:
   - 2181:2181
  ボリューム: #データをマウント - /usr/local/zookeeper-cluster/node4/data:/data
   - /usr/local/zookeeper-cluster/node4/datalog:/datalog
  環境:
   動物園ID: 4
   ZOO_SERVERS: server.4=0.0.0.0:2888:3888;2181 server.5=zoo2:2888:3888;2181 server.6=zoo3:2888:3888;2181
  ネットワーク:
   デフォルト:
    ipv4_アドレス: 172.18.0.14

 動物園2:
  画像: 動物園の飼育係
  再起動: 常に
  特権: true
  ホスト名: zoo2
  ポート:
   - 2182:2181
  ボリューム: #データをマウント - /usr/local/zookeeper-cluster/node5/data:/data
   - /usr/local/zookeeper-cluster/node5/datalog:/datalog
  環境:
   動物園ID: 5
   ZOO_SERVERS: server.4=zoo1:2888:3888;2181 server.5=0.0.0.0:2888:3888;2181 server.6=zoo3:2888:3888;2181
  ネットワーク:
   デフォルト:
    ipv4_アドレス: 172.18.0.15

 動物園3:
  画像: 動物園の飼育係
  再起動: 常に
  特権: true
  ホスト名: zoo3
  ポート:
   - 2183:2181
  ボリューム: #データをマウント - /usr/local/zookeeper-cluster/node6/data:/data
   - /usr/local/zookeeper-cluster/node6/datalog:/datalog
  環境:
   動物園ID: 6
   ZOO_SERVERS: server.4=zoo1:2888:3888;2181 server.5=zoo2:2888:3888;2181 server.6=0.0.0.0:2888:3888;2181
  ネットワーク:
   デフォルト:
    ipv4_アドレス: 172.18.0.16

networks: # カスタムネットワークのデフォルト:
  外部の:
   名前: ズーネット

YAML ファイルにはタブは使用できず、スペースのみ使用できることに注意してください。

バージョンとDockerバージョンの関係は次のとおりです。

次に(-d バックグラウンド開始)を実行します。

docker-compose -f docker-compose.yml アップ -d

開始されたコンテナを表示

[root@localhost DockerComposeFolder]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
a2c14814037d zookeeper "/docker-entrypoin..." 6 分前 起動 約 1 分 2888/tcp、3888/tcp、8080/tcp、0.0.0.0:2183->2181/tcp dockercomposefolder_zoo3_1
50310229b216 zookeeper "/docker-entrypoin..." 6 分前 起動 約 1 分 2888/tcp、3888/tcp、0.0.0.0:2181->2181/tcp、8080/tcp dockercomposefolder_zoo1_1
475d8a9e2d08 zookeeper "/docker-entrypoin..." 6 分前 起動 約 1 分 2888/tcp、3888/tcp、8080/tcp、0.0.0.0:2182->2181/tcp dockercomposefolder_zoo2_1

コンテナに入る

[root@localhost DockerComposeFolder]# docker exec -it a2c14814037d bash
ルート@zoo3:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
localhost:2181に接続しています

....

WatchedEvent 状態:SyncConnected タイプ:None パス:null
[zk:localhost:2181(接続済み) 0] 
[zk:localhost:2181(接続済み) 1] ls /
[動物園の飼育員]
[zk: localhost:2181(接続済み) 2] /hiを作成
作成 /hi
[zk: localhost:2181(接続済み) 3] ls /
[こんにちは、飼育員さん]

別のコンテナを入力

[root@localhost DockerComposeFolder]# docker exec -it 50310229b216 bash
ルート@zoo1:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
localhost:2181に接続しています

...

WatchedEvent 状態:SyncConnected タイプ:None パス:null

[zk:localhost:2181(接続済み) 0] ls /
[こんにちは、飼育員さん]

ローカル クライアントがクラスターに接続します。

zkCli.cmd -server 192.168.192.128:2181,192.168.192.128:2182,192.168.192.128:2183

チェック

すべてのアクティブコンテナを停止します

停止したコンテナをすべて削除する

より多くのDocker-Composeコマンド:

[root@localhost dockercomposefolder] #docker-compose  -  help
Docker を使用してマルチコンテナ アプリケーションを定義および実行します。

使用法:
 docker-compose [-f <arg>...] [オプション] [コマンド] [引数...]
 docker-compose -h|--ヘルプ

オプション:
 -f, --file FILE 代替コンポーズファイルを指定する
               (デフォルト: docker-compose.yml)
 -p, --project-name NAME 別のプロジェクト名を指定します
               (デフォルト: ディレクトリ名)
 --verbose 詳細な出力を表示
 --log-level LEVEL ログレベルを設定する (DEBUG、INFO、WARNING、ERROR、CRITICAL)
 --no-ansi ANSI制御文字を印刷しない
 -v, --version バージョンを印刷して終了する
 -H, --host HOST 接続するデーモンソケット

 --tls TLS を使用する。--tlsverify によって暗黙的に指定される。
 --tlscacert CA_PATH この CA によってのみ署名された証明書を信頼します
 --tlscert CLIENT_CERT_PATH TLS証明書ファイルへのパス
 --tlskey TLS_KEY_PATH TLS キーファイルへのパス
 --tlsverify TLSを使用してリモートを検証する
 --skip-hostname-check デーモンのホスト名を
               クライアント証明書に指定された名前
 --project-directory PATH 代替作業ディレクトリを指定する
               (デフォルト: Compose ファイルのパス)
 --compatibility が設定されている場合、Compose はキーの変換を試みます
               v3ファイル内のSwarm以外の同等ファイル

コマンド:
 構築 サービスを構築または再構築する
 バンドル Compose ファイルから Docker バンドルを生成する
 config Composeファイルを検証して表示する
 作成 サービスを作成する
 コンテナ、ネットワーク、イメージ、ボリュームを停止して削除する
 イベント コンテナからリアルタイムイベントを受信する
 exec 実行中のコンテナでコマンドを実行する
 help コマンドのヘルプを取得する
 画像 画像一覧
 コンテナを強制終了する
 ログ コンテナからの出力を表示する
 一時停止 サービスを一時停止する
 port ポートバインディングのパブリックポートを印刷する
 ps コンテナを一覧表示する
 pull プルサービスイメージ
 プッシュサービスイメージ
 サービスを再起動する
 rm 停止したコンテナを削除する
 実行 1回限りのコマンドを実行する
 スケール サービスのコンテナ数を設定する
 開始 サービスを開始する
 停止 サービスを停止する
 実行中のプロセスを表示する
 一時停止を解除する サービスを一時停止解除する
 コンテナの作成と起動
 version Docker-Composeのバージョン情報を表示します

これは、dockerの下にZookeeper(Stand-AloneおよびCluster)をインストールすることに関するこの記事の終わりです。

以下もご興味があるかもしれません:
  • Zookeeper&Kafka クラスターを構築するための Docker の実装
  • dockerを使用してZookeeperクラスターを構築する方法

<<:  MySql ストレージ エンジンとインデックスに関する知識のまとめ

>>:  webpackでvue環境を構築する際の異常なエラーを解決する

推薦する

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...

Windows 10 に Apache 2.4.41 をインストールするチュートリアル

1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...

MySQL マルチインスタンス構成ソリューション

1.1 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは...

MacOS に MySQL 8.0 をインストールして MySQL にログインする方法

公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...

Navicat の MySQL へのリモート接続が遅い理由の詳細な説明

最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

Nginx ローカル ディレクトリ マッピング実装コード例

他のデバイスの画像をローカルディレクトリにマウントするなど、サーバー上の静的リソースにアクセスする必...

30 種類の無料の高品質英語リボンフォント

30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...

Discuz! フォーラムに設定オプションを追加する方法

Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...

vue-video-player でのブレークポイント再開の実装

最近のプロジェクトでは、ブレークポイントからビデオの再生を再開する機能を実装する必要がありました。こ...

Vue は、デスクトップから Web ページにファイルをドラッグするためのサンプル コードを実装します (画像/オーディオ/ビデオを表示できます)

効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

CSS で実現される HTML 背景色のグラデーション

エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...