Installieren Sie Zookeeper unter Docker (Standalone und Cluster).

Installieren Sie Zookeeper unter Docker (Standalone und Cluster).

Nachdem wir Docker gestartet haben, schauen wir uns die Optionen an, die uns zur Verfügung stehen.

Wenn es eine offizielle Version gibt, wählen Sie natürlich die offizielle Version.

herunterladen:

[root@localhost-Administrator]# Docker Pull Zookeeper
Standard-Tag verwenden: latest
Es wird versucht, das Repository docker.io/library/zookeeper abzurufen ...
aktuell: Abrufen von docker.io/library/zookeeper
1ab2bdfe9778: Existiert bereits
7aaf9a088d61: Ziehen abgeschlossen
80a55c9c9fe8: Ziehen abgeschlossen
a0086b0e6eec: Ziehen abgeschlossen
4165e7457cad: Ziehen abgeschlossen
bcba13bcf3a1: Ziehen abgeschlossen
41c03a109e47: Ziehen abgeschlossen
4d5281c6b0d4: Ziehen abgeschlossen
Zusammenfassung: sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed
Status: Neueres Image für docker.io/zookeeper:latest heruntergeladen

Bilddetails anzeigen

[root@localhost admin]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
192.168.192.128:443/hello-2 latest 0c24558dd388 vor 42 Stunden 660 MB
192.168.192.128:443/hallo aktuell a3ba3d430bed vor 42 Stunden 660 MB
docker.io/nginx latest 5a3221f0137b vor 13 Tagen 126 MB
docker.io/zookeeper latest 3487af26dee9 vor 13 Tagen 225 MB
docker.io/registry latest f32a97de94e1 vor 5 Monaten 25,8 MB
docker.io/mongo latest 8bf72137439e vor 12 Monaten 380 MB
docker.io/influxdb latest 34de2bdc2d7f vor 12 Monaten 213 MB
docker.io/centos latest 5182e96772bf vor 12 Monaten 200 MB
docker.io/grafana/grafana latest 3e16e05be9a3 vor 13 Monaten 245 MB
docker.io/hello-world latest 2cb0d9787c4d vor 13 Monaten 1,85 kB
docker.io/java latest d23bdf5b1b1b vor 2 Jahren 643 MB
[root@localhost-Administrator]# docker inspect 3487af26dee9
[
  {
    "ID": "sha256:3487af26dee9ef9eacee9a97521bc4f0243bef0b285247258c32f4a03cab92c5",
    "RepoTags": [
      „docker.io/zookeeper:latest“
    ],
    "RepoDigests": [
      „docker.io/zookeeper@sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed“
    ],
    "Übergeordnet": "",
    "Kommentar": "",
    "Erstellt": "2019-08-15T06:10:50.178554969Z",
    "Container": "9a38467115f1952161d6075135d5c5287967282b834cfe68183339c810f9652b",
    "ContainerKonfiguration": {
      "Hostname": "9a38467115f1",
      "Domänenname": "",
      "Benutzer": "",
      "AttachStdin": falsch,
      "AttachStdout": falsch,
      "AttachStderr": false,
      "Offengelegte Ports": {
        "2181/tcp": {},
        "2888/tcp": {},
        "3888/tcp": {},
        "8080/tcp": {}
      },
      "Tty": falsch,
      "OpenStdin": falsch,
      "StdinOnce": falsch,
      "Umgebung": [
        „PFAD=/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=/Daten",
        "ZOO_DATA_LOG_DIR=/Datenprotokoll",
        "ZOO_LOG_DIR=/Protokolle",
        "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“
      ],
      "Befehl": [
        "/bin/sh",
        "-C",
        "#(nop) ",
        "CMD [\"zkServer.sh\" \"start-foreground\"]"
      ],
      "ArgsEscaped": wahr,
      "Bild": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e",
      "Volumen": {
        "/Daten": {},
        "/Datenprotokoll": {},
        "/logs": {}
      },
      "Arbeitsverzeichnis": "/apache-zookeeper-3.5.5-bin",
      "Einstiegspunkt": [
        „/docker-entrypoint.sh“
      ],
      "OnBuild": null,
      "Beschriftungen": {}
    },
    "DockerVersion": "18.06.1-ce",
    "Autor": "",
    "Konfiguration": {
      "Hostname": "",
      "Domänenname": "",
      "Benutzer": "",
      "AttachStdin": falsch,
      "AttachStdout": falsch,
      "AttachStderr": false,
      "Offengelegte Ports": {
        "2181/tcp": {},
        "2888/tcp": {},
        "3888/tcp": {},
        "8080/tcp": {}
      },
      "Tty": falsch,
      "OpenStdin": falsch,
      "StdinOnce": falsch,
      "Umgebung": [
        „PFAD=/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=/Daten",
        "ZOO_DATA_LOG_DIR=/Datenprotokoll",
        "ZOO_LOG_DIR=/Protokolle",
        "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“
      ],
      "Befehl": [
        "zkServer.sh",
        "Start-Vordergrund"
      ],
      "ArgsEscaped": wahr,
      "Bild": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e",
      "Volumen": {
        "/Daten": {},
        "/Datenprotokoll": {},
        "/logs": {}
      },
      "Arbeitsverzeichnis": "/apache-zookeeper-3.5.5-bin",
      "Einstiegspunkt": [
        „/docker-entrypoint.sh“
      ],
      "OnBuild": null,
      "Labels": null
    },
    "Architektur": "amd64",
    "Betriebssystem": "linux",
    "Größe": 225126346,
    "VirtuelleGröße": 225126346,
    "GraphTreiber": {
      "Name": "overlay2",
      "Daten": {
        "LowerDir": "/var/lib/docker/overlay2/92185ebf7638a7b34180cfb87795dd758405cbad4fd0139b92a227d1a4b61847/diff:/var/lib/docker/overlay2/8787e91f5c03a7c03cee072019eca49a0402a0a0902be39ed0b5d651a79cce35/diff:/var/lib/docker/overlay2/ce5864ddfa4d1478047aa9fcaa03744e8a4078ebe43b41e7836c96c54c724044/diff:/var/lib/docker/overlay2/fc99437bcfbabb9e8234c06c90d1c60e58c34ac053aff1adc368b7ad3a50c158/diff:/var/lib/docker/overlay2/1779297a8980830229bd4bf58bd741730956d6797332fd07b863a1b48dcb6fa2/diff:/var/lib/docker/overlay2/ee735aa3608d890ac4751dd93581a67cb54a5dd4714081e9d09d0ebd9dbc3501/diff:/var/lib/docker/overlay2/cf6b3cbc42f3c8d1fb09b29db0dafbb4dceb120925970ab8a3871eaa8562414c/diff",
        "MergedDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/zusammengeführt",
        "UpperDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/diff",
        "Arbeitsverzeichnis": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/work"
      }
    },
    "RootFS": {
      "Typ": "Ebenen",
      "Ebenen": [
        "sha256:1c95c77433e8d7bf0f519c9d8c9ca967e2603f0defbf379130d9a841cca2e28e",
        "sha256:2bf534399acac9c6b09a0b1d931223808000b04400a749f08187ed9ee435738d",
        "sha256:eb25e0278d41b9ac637d8cb2e391457cf44ce8d2bfe0646d0c9faefc96413f91",
        "sha256:e54bd3566d9ef3e1309a5af6caf8682f32c6ac4d6adfcbd3e601cfee4e2e0e85",
        "sha256:c79435051d529a7b86f5f9fc32e7e2ec401929434e5596f02a2af731f55c9f28",
        "sha256:76e0d7b2d700e6d17924b985703c7b5b84fb39ddcc0a1181b41217c2a11dffc4",
        "sha256:eecdc37df6afd77091641588f9639f63b65e8eb141e56529e00da44419c5bd04",
        „sha256:36e788f2d91a89375df5901f31cca33776f887c00ddfd3cf9f2466fa4cb794d6“
      ]
    }
  }
]

Der Standard-Pull ist die neueste Version 3.5.X. Wenn Sie Version 3.4.X benötigen, müssen Sie das Tag angeben

Einzelne Maschine

# Die letzte ist die Image-ID [root@localhost admin]# docker run -d -p 2181:2181 --name some-zookeeper --restart always 3487af26dee9
d5c6f857cd88c342acf63dd58e838a4cdf912daa6c8c0115091147136e819307
[root@localhost-Administrator]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
d5c6f857cd88 3487af26dee9 "/docker-entrypoint..." vor 4 Sekunden Up 3 Sekunden 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp some-zookeeper
[root@localhost-Administrator]# docker exec -it d5c6f857cd88 bash
root@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
Verbindung zu localhost:2181 wird hergestellt
29.08.2019 07:15:21,623 [myid:] - INFO [main:Environment@109] - Client-Umgebung:zookeeper.version=3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, erstellt am 03.05.2019 12:07 GMT
29.08.2019 07:15:21,679 [myid:] - INFO [main:Environment@109] - Clientumgebung:host.name=d5c6f857cd88
29.08.2019 07:15:21,680 [myid:] - INFO [main:Environment@109] - Clientumgebung:java.version=1.8.0_222
29.08.2019 07:15:21,717 [myid:] - INFO [main:Environment@109] - Clientumgebung:java.vendor=Oracle Corporation
29.08.2019 07:15:21,718 [myid:] – INFO [main:Environment@109] – Clientumgebung: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:
29.08.2019 07:15:22,108 [myid:] – INFO [main:Environment@109] – Clientumgebung:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
29.08.2019 07:15:22,109 [myid:] – INFO [main:Environment@109] – Clientumgebung:java.io.tmpdir=/tmp
29.08.2019 07:15:22,109 [myid:] – INFO [main:Environment@109] – Clientumgebung:java.compiler=<NA>
29.08.2019 07:15:22,109 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.name=Linux
29.08.2019 07:15:22,109 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.arch=amd64
29.08.2019 07:15:22,110 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.version=3.10.0-862.9.1.el7.x86_64
29.08.2019 07:15:22,110 [myid:] - INFO [main:Environment@109] - Clientumgebung:Benutzername=root
29.08.2019 07:15:22,110 [myid:] – INFO [main:Environment@109] – Clientumgebung:user.home=/root
29.08.2019 07:15:22,110 [myid:] – INFO [main:Environment@109] – Clientumgebung:user.dir=/apache-zookeeper-3.5.5-bin
29.08.2019 07:15:22,118 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.memory.free=11MB
29.08.2019 07:15:22,148 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.memory.max=247MB
29.08.2019 07:15:22,148 [myid:] – INFO [main:Environment@109] – Clientumgebung:os.memory.total=15MB
29.08.2019 07:15:22,206 [myid:] - INFO [main:ZooKeeper@868] - Client-Verbindung wird initiiert, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3b95a09c
29.08.2019 07:15:22,239 [myid:] - INFO [main:X509Util@79] - Einstellung -D jdk.tls.rejectClientInitiatedRenegotiation=true, um die vom Client initiierte TLS-Neuverhandlung zu deaktivieren
29.08.2019 07:15:22,285 [myid:] – INFO [main:ClientCnxnSocket@237] – jute.maxbuffer-Wert beträgt 4194304 Bytes
29.08.2019 07:15:22,366 [myid:] – INFO [main:ClientCnxn@1653] – zookeeper.request.timeout-Wert ist 0. Funktion aktiviert=
Willkommen bei ZooKeeper!
JLine-Unterstützung ist aktiviert
29.08.2019 07:15:22,563 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Socket-Verbindung zum Server localhost/0:0:0:0:0:0:0:0:1:2181 wird geöffnet. Es wird kein Versuch zur Authentifizierung mit SASL unternommen (unbekannter Fehler)
29.08.2019 07:15:23,443 [myid:localhost:2181] – INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] – Socket-Verbindung hergestellt, Sitzung wird initiiert, Client: /0:0:0:0:0:0:0:1:37198, Server: localhost/0:0:0:0:0:0:0:1:2181
29.08.2019 07:15:23,520 [myid:localhost:2181] – INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] – Sitzungsaufbau auf Server localhost/0:0:0:0:0:0:0:1:2181 abgeschlossen, Sitzungs-ID = 0x10001216d990000, ausgehandeltes Timeout = 30000
 
BEOBACHTER::
 
WatchedEvent-Status: SyncConnected Typ: Keiner Pfad: null
[zk:localhost:2181(VERBUNDEN) 0] ls /
[Tierpfleger]
[zk: localhost:2181(VERBUNDEN) 1] beenden
 
BEOBACHTER::
 
WatchedEvent-Status: Geschlossen Typ: Keiner Pfad: null
29.08.2019 07:15:37,042 [myid:] – INFO [main:ZooKeeper@1422] – Sitzung: 0x10001216d990000 geschlossen
29.08.2019 07:15:37,043 [myid:] – INFO [main-EventThread:ClientCnxn$EventThread@524] – EventThread für Sitzung heruntergefahren: 0x10001216d990000
root@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# beenden
Ausfahrt
[root@localhost-Administrator]#

Zugriff von extern (192.168.192.128:2181)

Cluster

Umgebung: Einzelner Hostcomputer (192.168.192.128), starten Sie drei Zookeeper-Container.

Hier gibt es ein Problem, nämlich die Kommunikation zwischen Docker-Containern. Das ist sehr wichtig!

Docker hat drei Netzwerkmodi: Bridge, Host und Keine. Wenn Sie beim Erstellen eines Containers --network nicht angeben, ist Bridge der Standard.

Brücke: Weisen Sie jedem Container eine IP zu und verbinden Sie den Container mit einer virtuellen Docker0-Brücke, um über die Docker0-Brücke mit dem Host zu kommunizieren. Das heißt, in diesem Modus können Sie die Host-IP + den Container-Mapping-Port nicht zur Kommunikation zwischen Docker-Containern verwenden.

Host: Der Container virtualisiert nicht seine eigene Netzwerkkarte und konfiguriert nicht seine eigene IP, sondern verwendet die IP und den Port des Hostcomputers. Auf diese Weise kann die Kommunikation zwischen Docker-Containern den Host-IP- und Container-Mapping-Port verwenden

keine: Kein Netzwerk.

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

Erstellen Sie zunächst lokal ein Verzeichnis:

[root@localhost-Administrator]# mkdir /usr/local/zookeeper-cluster
[root@localhost-Administrator]# mkdir /usr/local/zookeeper-cluster/node1
[root@localhost-Administrator]# mkdir /usr/local/zookeeper-cluster/node2
[root@localhost-Administrator]# mkdir /usr/local/zookeeper-cluster/node3
[root@localhost-Administrator]# ll /usr/local/zookeeper-cluster/
gesamt 0
drwxr-xr-x. 2 root root 6 28. August 23:02 node1
drwxr-xr-x. 2 root root 6 28. August 23:02 node2
drwxr-xr-x. 2 root root 6 28. August 23:02 node3

Führen Sie dann den Befehl aus, um zu starten

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_MEINE_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_MEINE_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_MEINE_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

【Grube】

Auf den ersten Blick ist nichts falsch. Ordnen Sie zuerst den Port dem Hostcomputer zu, und dann ist die Zugriffsadresse zwischen den drei Zookeepern die IP des Hostcomputers: zugeordneter Port. Es ist nichts falsch.

Sie können das Problem erkennen, wenn Sie sich den Netzwerkmodus ansehen, den ich zuvor erwähnt habe. Es gibt ein Problem mit der IP in ZOO_SERVERS. Leute, die diesen Fehler machen, verstehen den Netzwerkmodus von Docker nicht. Was ist falsch? Siehe unten.

Über ZOO_SERVERS

Was bedeutet das? Ab 3.5.0 sollten die Konfigurationsparameter clientPort und clientPortAddress nicht mehr verwendet werden. Stattdessen sind diese Informationen jetzt Teil der Server-Schlüsselwortspezifikation.

Die Portzuordnungen der drei Container sind unterschiedlich, z. B. 2181/2182/2183. Da es sich um einen Hostcomputer handelt, können die Ports nicht in Konflikt geraten. Wenn Sie sich nicht auf demselben Computer befinden, müssen Sie den Port nicht ändern.

Der letzte Parameter ist die Bild-ID oder kann der Bildname sein: TAG.

Der Parameter --privileged=true dient zum Lösen von [chown: ändern des Besitzes von '/data': Zugriff verweigert], Sie können true auch weglassen

Ausführungsergebnis:

[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_MEINE_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_MEINE_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_MEINE_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-Administrator]#

Anzeigen des gestarteten Containers

[root@localhost-Administrator]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
0:3890->3888/tcp zookeeper_node3 6dabae1d92f0 3487af26dee9 "/docker-entrypoin..." vor 31 Sekunden. 29 Sekunden aktiv. 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 …“ vor 36 Sekunden. 35 Sekunden aktiv. 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 …“ vor 46 Sekunden. Seit 45 Sekunden aktiv. 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-Administrator]#

Heißt es nicht, dass ein Fehler vorliegt? Wie kam es zu einem erfolgreichen Start? ? Werfen wir einen Blick auf das Startprotokoll von Knoten 1

[root@localhost-Administrator]# docker logs -f 4bfa6bbeb936
ZooKeeper JMX standardmäßig aktiviert

...

2019-08-29 09:20:22,665 [myid:1] - WARNUNG [WorkerSender[myid=1]:QuorumCnxManager@677] - Kanal zu 2 kann bei Wahladresse /192.168.192.128:3889 nicht geöffnet werden
java.net.ConnectException: Verbindung abgelehnt (Verbindung abgelehnt)
  bei java.net.PlainSocketImpl.socketConnect (native Methode)
  bei java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  bei java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  bei java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  bei java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  bei java.net.Socket.connect(Socket.java:589)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:618)
  bei org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477)
  bei org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456)
  bei java.lang.Thread.run(Thread.java:748)
2019-08-29 09:20:22,666 [myid:1] - WARNUNG [WorkerSender[myid=1]:QuorumCnxManager@677] - Kanal zu 3 kann bei Wahladresse /192.168.192.128:3890 nicht geöffnet werden
java.net.ConnectException: Verbindung abgelehnt (Verbindung abgelehnt)
  bei java.net.PlainSocketImpl.socketConnect (native Methode)
  bei java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  bei java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  bei java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  bei java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  bei java.net.Socket.connect(Socket.java:589)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:648)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:705)
  bei org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:618)
  bei org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477)
  bei org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456)
  bei java.lang.Thread.run(Thread.java:748)

Verbindung zu 2 und 3 nicht möglich. Warum? Weil im Standardnetzwerkmodus von Docker die IP-Adresse und der zugeordnete Port des Hostcomputers überhaupt nicht gefunden werden können! Sie haben ihre eigene IP! wie folgt:

[root@localhost-Administrator]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
6dabae1d92f0 3487af26dee9 „/docker-entrypoin …“ vor 5 Minuten. Vor 5 Minuten aktiv. 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 …“ vor 6 Minuten. Vor 6 Minuten aktiv 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 …“ vor 6 Minuten. Vor 6 Minuten aktiv. 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-Administrator]# docker inspect 4bfa6bbeb936
      "Netzwerke": {
        "Brücke": {
          "IPAMConfig": null,
          "Links": null,
          "Aliase": null,
          "Netzwerk-ID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "EndpointID": "368237e4c903cc663111f1fe33ac4626a9100fb5a22aec85f5eccbc6968a1631",
          "Gateway": "172.17.0.1",
          "IP-Adresse": "172.17.0.2",
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAdresse": "02:42:ac:11:00:02"
        }
      }
    }
  }
]

[root@localhost-Administrator]# docker inspect dbb7f1f323a0
      "Netzwerke": {
        "Brücke": {
          "IPAMConfig": null,
          "Links": null,
          "Aliase": null,
          "Netzwerk-ID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "EndpointID": "8a9734044a566d5ddcd7cbbf6661abb2730742f7c73bd8733ede9ed8ef106659",
          "Gateway": "172.17.0.1",
          "IP-Adresse": "172.17.0.3",
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAdresse": "02:42:ac:11:00:03"
        }
      }
    }
  }
]

[root@localhost-Administrator]# docker inspect 6dabae1d92f0
      "Netzwerke": {
        "Brücke": {
          "IPAMConfig": null,
          "Links": null,
          "Aliase": null,
          "Netzwerk-ID": "5fc1ce4362afe3d34fdf260ab0174c36fe4b7daf2189702eae48101a755079f3",
          "EndpointID": "b10329b9940a07aacb016d8d136511ec388de02bf3bd0e0b50f7f4cbb7f138ec",
          "Gateway": "172.17.0.1",
          "IP-Adresse": "172.17.0.4",
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAdresse": "02:42:ac:11:00:04"
        }
      }
    }
  }
]

Knoten1---172.17.0.2
Knoten2---172.17.0.3
Knoten3---172.17.0.4

Nachdem wir nun wissen, dass es eine eigene IP hat, ergibt sich ein weiteres Problem: Seine IP ist dynamisch und wir können sie vor dem Start nicht kennen. Eine Lösung besteht darin, ein eigenes Bridge-Netzwerk zu erstellen und dann beim Erstellen des Containers die IP anzugeben.

[Richtig beginnen]

[root@localhost admin]# Docker-Netzwerk erstellen --Driver Bridge --Subnet=172.18.0.0/16 --Gateway=172.18.0.1 Zoonet
8257c501652a214d27efdf5ef71ff38bfe222c3a2a7898be24b8df9db1fb3b13
[root@localhost-Administrator]# Docker-Netzwerk ls
NETZWERK-ID-NAME TREIBER-UMFANG
5fc1ce4362af Brücke Brücke lokal
6aa33e21444e Host Host lokal
20e563b93ce9 keine null lokal
8257c501652a Zoonet-Brücke lokal
[root@localhost admin]# Docker-Netzwerkinspektion 8257c501652a
[
  {
    "Name": "zoonet",
    "ID": "8257c501652a214d27efdf5ef71ff38bfe222c3a2a7898be24b8df9db1fb3b13",
    "Erstellt": "2019-08-29T06:08:01.442601483-04:00",
    "Geltungsbereich": "lokal",
    "Treiber": "Brücke",
    "EnableIPv6": false,
    "IPAM": {
      "Treiber": "Standard",
      "Optionen": {},
      "Konfiguration": [
        {
          "Subnetz": "172.18.0.0/16",
          "Gateway": "172.18.0.1"
        }
      ]
    },
    "Intern": false,
    "Anfügbar": false,
    "Container": {},
    "Optionen": {},
    "Beschriftungen": {}
  }
]

Dann ändern wir den Erstellungsbefehl des Zookeeper-Containers.

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_MEINE_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_MEINE_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_MEINE_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. Da 2888 und 3888 nicht freigegeben werden müssen, werden sie nicht zugeordnet.

2. Geben Sie Ihr eigenes Netzwerk und Ihre IP an;

3. Die Umgebung zwischen den einzelnen Containern ist isoliert, sodass die im Container verwendeten Ports dieselben sind: 2181/2888/3888

Laufergebnisse:

[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_MEINE_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_MEINE_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_MEINE_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-Administrator]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
c8bc1b9ae9ad 3487af26dee9 "/docker-entrypoin..." vor 17 Sekunden. 16 Sekunden aktiv. 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp zookeeper_node3
649a4dbfb694 3487af26dee9 "/docker-entrypoint..." vor 22 Sekunden. 21 Sekunden aktiv. 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp zookeeper_node2
50c07cf11fab 3487af26dee9 "/docker-entrypoint..." vor 33 Sekunden Aktiv seit 32 Sekunden 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper_node1
[root@localhost-Administrator]#

Geben Sie den zu überprüfenden Container ein:

[root@localhost-Administrator]# docker exec -it 50c07cf11fab bash
root@50c07cf11fab:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh status
ZooKeeper JMX standardmäßig aktiviert
Konfiguration verwenden: /conf/zoo.cfg
Gefundener Client-Port: 2181. Client-Adresse: localhost.
Modus: Follower
root@50c07cf11fab:/apache-zookeeper-3.5.5-bin# beenden
Ausfahrt
[root@localhost-Administrator]# docker exec -it 649a4dbfb694 bash
root@649a4dbfb694:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh status
ZooKeeper JMX standardmäßig aktiviert
Konfiguration verwenden: /conf/zoo.cfg
Gefundener Client-Port: 2181. Client-Adresse: localhost.
Modus: Anführer
root@649a4dbfb694:/apache-zookeeper-3.5.5-bin# beenden
Ausfahrt
[root@localhost-Administrator]# docker exec -it c8bc1b9ae9ad bash
root@c8bc1b9ae9ad:/apache-zookeeper-3.5.5-bin# ./bin/zkServer.sh status
ZooKeeper JMX standardmäßig aktiviert
Konfiguration verwenden: /conf/zoo.cfg
Gefundener Client-Port: 2181. Client-Adresse: localhost.
Modus: Follower
root@c8bc1b9ae9ad:/apache-zookeeper-3.5.5-bin# beenden
Ausfahrt
[root@localhost-Administrator]#

Überprüfen der Erstellung des Knotens

Öffnen Sie die Firewall für den externen Zugriff

Firewall-Befehl --zone=public --add-port=2181/tcp --permanent
Firewall-Befehl --zone=public --add-port=2182/tcp --permanent
Firewall-Befehl --zone=public --add-port=2183/tcp --permanent
systemctl restart firewalld
Firewall-Befehl --list-all

Lokal verwende ich den Zookeeper-Client, um eine Verbindung zum Cluster auf der virtuellen Maschine herzustellen:

Sie können sehen, dass die Verbindung erfolgreich ist!

Clusterinstallationsmethode 2: Installation über Docker Stack Deploy oder Docker-Compose

Verwenden Sie hier Docker-Compose. Installieren Sie zuerst Docker-Compose

[root@localhost-Administrator]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 % Gesamt % Empfangen % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktuell
                 Dload Upload Gesamtverbrauch Verbleibende Geschwindigkeit
100 617 0 617 0 0 145 0 --:--:-- 0:00:04 --:--:-- 145
100 15,4 Mio. 100 15,4 Mio. 0 0 131.000 0 0:02:00 0:02:00 --:--:-- 136.000
[root@localhost-Administrator]# chmod +x /usr/local/bin/docker-compose

Überprüfen Sie die Version (um festzustellen, ob die Installation erfolgreich war).

[root@localhost-Administrator]# docker-compose --version
Docker-Compose-Version 1.24.1, Build 4667896b

Wenn Sie deinstallieren

rm /usr/local/bin/docker-compose

Starten Sie die Konfiguration und erstellen Sie drei neue Mount-Verzeichnisse

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

Erstellen Sie ein neues Verzeichnis und erstellen Sie darin eine neue Datei

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

Der Dateiinhalt ist wie folgt: (siehe oben für benutzerdefiniertes Netzwerk)

Version: '3.1'

Leistungen:
 zoo1:
  Bild: Tierpfleger
  Neustart: immer
  privilegiert: wahr
  Hostname: zoo1
  Häfen:
   - 2181:2181
  Volumes: #Daten mounten - /usr/local/zookeeper-cluster/node4/data:/data
   – /usr/local/zookeeper-cluster/node4/datalog:/datalog
  Umfeld:
   ZOO_MY_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
  Netzwerke:
   Standard:
    IPv4-Adresse: 172.18.0.14

 zoo2:
  Bild: Tierpfleger
  Neustart: immer
  privilegiert: wahr
  Hostname: zoo2
  Häfen:
   - 2182:2181
  Volumes: #Daten mounten - /usr/local/zookeeper-cluster/node5/data:/data
   – /usr/local/zookeeper-cluster/node5/datalog:/datalog
  Umfeld:
   ZOO_MY_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
  Netzwerke:
   Standard:
    IPv4-Adresse: 172.18.0.15

 zoo3:
  Bild: Tierpfleger
  Neustart: immer
  privilegiert: wahr
  Hostname: zoo3
  Häfen:
   - 2183:2181
  Volumes: #Daten mounten - /usr/local/zookeeper-cluster/node6/data:/data
   – /usr/local/zookeeper-cluster/node6/datalog:/datalog
  Umfeld:
   ZOO_MY_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
  Netzwerke:
   Standard:
    IPv4-Adresse: 172.18.0.16

Netzwerke: # Benutzerdefinierte Netzwerkvorgabe:
  extern:
   Name: Zoonet

Beachten Sie, dass die YAML-Datei keine Tabulatoren, sondern nur Leerzeichen enthalten darf.

Die Beziehung zwischen Version und Docker-Version ist wie folgt:

Dann ausführen (-d Hintergrund starten)

docker-compose -f docker-compose.yml up -d

Gestartete Container anzeigen

[root@localhost DockerComposeFolder]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
a2c14814037d zookeeper "/docker-entrypoin..." vor 6 Minuten Aktiv Ungefähr eine Minute 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp dockercomposefolder_zoo3_1
50310229b216 zookeeper "/docker-entrypoin..." vor 6 Minuten Aktiv Ungefähr eine Minute 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp dockercomposefolder_zoo1_1
475d8a9e2d08 zookeeper "/docker-entrypoin..." vor 6 Minuten Aktiv Vor etwa einer Minute 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp dockercomposefolder_zoo2_1

Betreten eines Containers

[root@localhost DockerComposeFolder]# docker exec -it a2c14814037d bash
root@zoo3:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
Verbindung zu localhost:2181 wird hergestellt

....

WatchedEvent-Status: SyncConnected Typ: Keiner Pfad: null
[zk:localhost:2181(VERBUNDEN) 0] 
[zk:localhost:2181(VERBUNDEN) 1] ls /
[Tierpfleger]
[zk: localhost:2181(VERBUNDEN) 2] erstellen /hi
Erstellt /hi
[zk: localhost:2181(VERBUNDEN) 3] ls /
[hallo, Tierpfleger]

Einen anderen Container eingeben

[root@localhost DockerComposeFolder]# docker exec -it 50310229b216 bash
root@zoo1:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.sh
Verbindung zu localhost:2181 wird hergestellt

...

WatchedEvent-Status: SyncConnected Typ: Keiner Pfad: null

[zk:localhost:2181(VERBUNDEN) 0] ls /
[hallo, Tierpfleger]

Der lokale Client stellt eine Verbindung zum Cluster her:

ZKCLI.CMD -SERVER 192.168.192.128:2181,192.168.192.128:2182,192.168.192.128:2183

Überprüfen

Stoppen Sie alle aktiven Behälter

Entfernen Sie alle gestoppten Container

Weitere Docker-Compose-Befehle:

[root@localhost dockerComponponFolder]# Docker-compose-HELP
Definieren und führen Sie Multi-Container-Anwendungen mit Docker aus.

Verwendung:
 docker-compose [-f <arg>…] [Optionen] [BEFEHL] [ARGS…]
 docker-compose -h|--Hilfe

Optionen:
 -f, --file DATEI Gibt eine alternative Erstellungsdatei an
               (Standard: docker-compose.yml)
 -p, --project-name NAME Geben Sie einen alternativen Projektnamen an
               (Standard: Verzeichnisname)
 --verbose Weitere Ausgabe anzeigen
 --log-level LEVEL Protokollebene festlegen (DEBUG, INFO, WARNING, ERROR, CRITICAL)
 --no-ansi Keine ANSI-Steuerzeichen drucken
 -v, --version Version drucken und beenden
 -H, --host HOST Daemon-Socket zum Verbinden

 --tls TLS verwenden; impliziert durch --tlsverify
 --tlscacert CA_PATH Nur von dieser Zertifizierungsstelle signierte Zertifikate vertrauen
 --tlscert CLIENT_CERT_PATH Pfad zur TLS-Zertifikatsdatei
 --tlskey TLS_KEY_PATH Pfad zur TLS-Schlüsseldatei
 --tlsverify TLS verwenden und den Remote-
 --skip-hostname-check Vergleicht den Hostnamen des Daemons nicht mit dem
               Name, der im Client-Zertifikat angegeben ist
 --project-directory PATH Geben Sie ein alternatives Arbeitsverzeichnis an
               (Standard: der Pfad der Compose-Datei)
 --compatibility Wenn gesetzt, versucht Compose, Schlüssel zu konvertieren
               in v3-Dateien zu ihrem Nicht-Swarm-Äquivalent

Befehle:
 build Dienste erstellen oder neu erstellen
 Bundle: Generieren Sie ein Docker-Bundle aus der Compose-Datei
 config Überprüfen und Anzeigen der Compose-Datei
 erstellenErstellen von Diensten
 down Stoppen und entfernen Sie Container, Netzwerke, Bilder und Volumes
 Ereignisse Empfangen Sie Echtzeitereignisse von Containern
 exec Einen Befehl in einem laufenden Container ausführen
 Hilfe Erhalten Sie Hilfe zu einem Befehl
 Bilder Liste der Bilder
 töten Töten Sie Container
 logs Ausgabe von Containern anzeigen
 pause Dienste pausieren
 Port Den öffentlichen Port für eine Portbindung drucken
 ps Container auflisten
 Pull Pull-Dienst Bilder
 push-service Bilder
 Neustart. Dienste neu starten.
 rm Gestoppte Container entfernen
 run Einen einmaligen Befehl ausführen
 Skalieren Festlegen der Anzahl von Containern für einen Dienst
 Start Dienste starten
 stop Dienste stoppen
 top Anzeige der laufenden Prozesse
 unpause Dienste pausieren
 nach oben Container erstellen und starten
 version Zeigt die Docker-Compose-Versionsinformationen an

Dies ist das Ende dieses Artikels zur Installation von Zookeeper (eigenständiger und Cluster) unter Docker.

Das könnte Sie auch interessieren:
  • Implementierung von Docker zum Erstellen eines Zookeeper- und Kafka-Clusters
  • So erstellen Sie einen Zookeeper -Cluster mit Docker

<<:  Lassen Sie uns ausführlich darüber sprechen, ob setState in React eine Makro- oder eine Mikroaufgabe ist

>>:  Beheben Sie den abnormalen Fehler beim Erstellen einer Vue-Umgebung mit Webpack

Artikel empfehlen

Kontext und Eigenschaften von React erklärt

Inhaltsverzeichnis 1. Kontext 1. Anwendungsszenar...

JavaScript zum Implementieren einer zeitlich begrenzten Flash-Sale-Funktion

In diesem Artikel wird der spezifische JavaScript...

Ein kurzer Überblick über CSS3-Pseudoklassenselektoren

Vorwort Wenn CSS die Grundfertigkeit der Front-En...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

So zentrieren Sie Ihre HTML-Schaltfläche

Wie zentrieren Sie Ihre HTML-Schaltfläche selbst?...

Beschreibung der HTML-Meta-Viewport-Attribute

Was ist ein Ansichtsfenster? Mobile Browser platz...

Beispielcode zum Konvertieren von Videos mit der ffmpeg-Befehlszeile

Bevor Sie mit dem Haupttext dieses Artikels begin...

CentOS 7.6 Installation der MySQL 5.7 GA-Version Tutorial-Diagramm

Inhaltsverzeichnis Umgebungsvorbereitung Umgebung...

JavaScript zum Erzielen eines benutzerdefinierten Bildlaufleisteneffekts

In tatsächlichen Projekten befinden sich die Bild...

Über Zabbix Admin-Login vergessen Passwort zurücksetzen

Das Problem beim Zurücksetzen des Passworts für d...

Lösung für „Ubuntu kann keine Verbindung zum Netzwerk herstellen“

Effektive Lösung für Ubuntu, wenn in einer virtue...

Detaillierte Erklärung zur Verwendung von MySQL Online DDL

Inhaltsverzeichnis Text LOCK-Parameter ALGORITHMU...