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 独自の 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)をインストールすることに関するこの記事の終わりです。 以下もご興味があるかもしれません:
|
<<: MySql ストレージ エンジンとインデックスに関する知識のまとめ
>>: webpackでvue環境を構築する際の異常なエラーを解決する
序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...
1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...
1.1 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは...
公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...
最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...
<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...
目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...
他のデバイスの画像をローカルディレクトリにマウントするなど、サーバー上の静的リソースにアクセスする必...
30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...
Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...
最近のプロジェクトでは、ブレークポイントからビデオの再生を再開する機能を実装する必要がありました。こ...
効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...
目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...
エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...
1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...