序文
どのように局部的に説明し、以前の記事では、それがされていますDocker Machine
ドッカー仮想ホストを作成し、また、仮想ホストを作成することができ、それはまた、ローカルのWindowsで使用することができます。このセクションでは、ドッカー三銃士の1を学習していきます。Docker Swarm
ドッカースウォーム
ドッカードッカークラスの群発局所凝集は、それが仮想ホストドッカー別個ドッカーホストのセットに変換されます。標準ドッカーのAPIを使用してドッカースウォーム。ドッカーデーモンツールや複数のホストとの対話はスウォームを拡張に変換するために使用できるようにします。これは含まれています:
- これは、ドッカーで構成します
- ドッカーマシン
- Dokku
ドッカースウォームサポートプラグアンドプレイの原則は、初期の開発、API開発者の最後で、それはプラグイン可能なバックエンドをサポートしています。箱から出して、あなたが交換スケジューリングに使用できることを、この手段は次のようにあなたをバックエンドに使用するドッカースウォームの準備ができてバックエンド。スウォーム切り替えスムーズ最も経験ボックスのユースケースを提供するように設計。
インストールドッカースウォーム
ドッカースウォームが実際にAであるので、私たちは、ミラーの公式ドッカースウォームでクラスタを作成することができます Docker images
docker run swarm --help
$ docker run swarm --help
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
d85c18077b82: Pull complete 1e6bb16f8cb1: Pull complete 85bac13497d7: Pull complete Digest: sha256:b866583a3b8791bcd705b7bc0fd94c66b695a1a2dbaeb5f59ed29940e5015dc8
Status: Downloaded newer image for swarm:latest
Usage: swarm [OPTIONS] COMMAND [arg...]
A Docker-native clustering system
Version: 1.2.9 (527a849)
Options:
--debug debug mode [$DEBUG]
--log-level, -l "info" Log level (options: debug, info, warn, error, fatal, panic)
--experimental enable experimental features
--help, -h show help
--version, -v print the version
Commands:
create, c Create a cluster
list, l List nodes in a cluster
manage, m Manage a docker cluster
join, j Join a docker cluster
help Shows a list of commands or help for one command
Run 'swarm COMMAND --help' for more information on a command.
それは、鏡の最初の使用であるため、このイメージがあるかどうかを現在の環境ドッカーエンジンをチェックして、いない最新バージョンがローカルにプルアップ。
ミラーリングドッカースウォームを使用する利点
他の方法、そのスウォームミラーを使用する利点と比較すると
- 追加の再利用のスウォームを必要としないシステム上で任意のバイナリをインストールします。
- あなたは、ドッキングウィンドウエンジンで最新バージョンを入手することができます
- スウォームの容器および環境。いいえ、別の保守ません
インタラクティブなコンテナでクラスタを作成します
クラスタは、管理ノードとワーカーノードを作成する必要があります。ここでのテストは、管理ノードを作成するクラスタを構成する管理ノードでの作業に二つのノードを追加します。
管理ノードを作成します。
docker-machine ls
既存の仮想ホストを見ます
$ docker-machine.exe ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.102:2376 v19.03.5
実際には、ホストが管理ホストとして使用することができ、実行中の仮想ホストを持っていることが判明しています
SSH接続管理ノードでは、最初の仮想マシンで管理ノードを作成します
docker-machine ssh default
仮想ホストに接続、オープンスウォーム
docker@default:~$ docker swarm init --advertise-addr 192.168.99.102
Swarm initialized: current node (5mohlisxbrkogfbtzk6nujkfw) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4k26snh9hpamnpdpyk4qqogeolf6ing4u6e35jkjpwx83v9xcp-f2rhw7i7p9p0jeesvwb81xb9i 192.168.99.102:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker swarm init --advertise-addr 192.168.99.102
ここではを通じて、仮想マシンので、アドレスを指定する必要がip address
複数のネットワークカードを持っているので、私たちはアドレスを指定する必要があり、この仮想マシンで見つけることができます。
あなたはマスターノードを作成したら、それは我々がサービスノードを使用する必要性を作成する必要があるトークントークンこれまで得ることができます。
docker swarm join --token SWMTKN-1-4k26snh9hpamnpdpyk4qqogeolf6ing4u6e35jkjpwx83v9xcp-f2rhw7i7p9p0jeesvwb81xb9i 192.168.99.102:2377
実行docker info
私たちは群れの現在の状態がすでにアクティブになって見つけることができ、管理ノード1
Swarm: active
NodeID: rzu7l3z4mysplwgdce8vj2364
Is Manager: true
ClusterID: uuq50bc4x4bckqfglkrj05vao
Managers: 1
Nodes: 1
Default Address Pool: 10.0.0.0/8
docker node ls
あなたは、現在のノードの情報を表示することができます
docker@default:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
5mohlisxbrkogfbtzk6nujkfw * default Ready Active Leader 19.03.5
作業ノードを作成します。
docker-machine create work1
デフォルトのVirtualBoxのVMの仮想ホストを作成します。
docker-machine ssh work1
仮想ホストを接続した後、管理ノードのノードに参加します
docker@work1:~$ docker swarm join --token SWMTKN-1-4k26snh9hpamnpdpyk4qqogeolf6ing4u6e35jkjpwx83v9xcp-f2rhw7i7p9p0jeesvwb81xb9i 192.168.99.102:2377
This node joined a swarm as a worker.
同様に、デフォルトに追加し、別のWORK2ノードを作成します。
情報管理ノード
現在のホストは、我々は、仮想ホスト状況のすべてを表示することができます。
$ docker-machine.exe ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.102:2376 v19.03.5
work1 - virtualbox Running tcp://192.168.99.103:2376 v19.03.5
work2 - virtualbox Running tcp://192.168.99.104:2376 v19.03.5
管理するホストに、あなたはノードを確認することができます。
docker@default:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
5mohlisxbrkogfbtzk6nujkfw * default Ready Active Leader 19.03.5
qqgd4abpjw08lwh31ddgez041 work1 Ready Active 19.03.5
gblxw2whlxl0k94nmfozhs7gl work2 Ready Active 19.03.5
サービスとタスクの関係
- サービスはタスクのセットで、サービスは、複数のタスクを持つことができます。
- タスクは、ピングwww.baidu.comように、ユニット内部最小をクラスタ化することです
クラスタサービスの展開
docker-machine ssh default
管理ホストの接続
docker@default:~$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
c9b1b535fdd9: Pull complete Digest: sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
引っ張るalpine linux
ミラーを
アルパインは軽量Linuxディストリビューションのための安全なオペレーティングシステムです。それはMUSL libcのbusyboxのを使用して、アルパイン通常のLinuxディストリビューションとは異なり、システム規模や資源消費の実行時間を短縮するために
展開のタスク
ドッキングウィンドウのサービス作成[OPTIONS] IMAGE [COMMAND] [ARG ...]
docker service create --replicas 1 --name hello-world alpine ping www.baidu.com
--replicas
タスクの数を指定します。--name
サービスの名前を指定します。alpine
実行に名前のニーズをミラーリングping www.baidu.com
ミラー内で実行されるコマンド
docker@default:~$ docker service create --replicas 1 --name hello-world alpine ping www.baidu.com
nzr66u3j32ndgzodw08cer1he
overall progress: 1 out of 1 tasks 1/1: running[==================================================>] verify: Service converged
共通コマンド
docker service ps <name>
ビュー実行中のサービスだけでなく、進捗状況
docker@default:~$ docker service ps hello-world
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
j03uhnoauhet hello-world.1 alpine:latest default Running Running 8 minutes ago
docker service ls
現在クラスタの群れで実行されているすべてのタスクを見ます
docker@default:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
nzr66u3j32nd hello-world replicated 1/1 alpine:latest
監視サービス
docker service inspect --pretty hello-world
コマンドは、サービスの動作の概要。
ID: nzr66u3j32ndgzodw08cer1he
Name: hello-world
Service Mode: Replicated
Replicas: 1
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
Monitoring Period: 5s
Max failure ratio: 0
Update order: stop-first
RollbackConfig:
Parallelism: 1
On failure: pause
Monitoring Period: 5s
Max failure ratio: 0
Rollback order: stop-first
ContainerSpec:
Image: alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d
Args: ping www.baidu.com
Init: false
Resources:
Endpoint Mode: vip
伸縮性
docker service update --replicas 2 hello-world
サービスタスクの元の数2倍に
docker@default:~$ docker service update --replicas 2 hello-world
hello-world
overall progress: 2 out of 2 tasks 1/2: running [==================================================>] 2/2: running [==================================================>] verify: Service converged
docker service ps <name>
このタスクの動作を確認
docker@default:~$ docker service ps hello-world
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
j03uhnoauhet hello-world.1 alpine:latest default Running Running 26 minutes ago
k6oudbv4e9he hello-world.2 alpine:latest work1 Running Running about a minute ago
割り当てられた2つのタスクここでdefault
work1
ノードを
チェックwork1
ノードの動作を
### 进入work1
docker-machine ssh work1
docker@work1:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c86154f43f4 alpine:latest "ping www.baidu.com" 4 minutes ago Up 4 minutes hello-world.2.k6oudbv4e9henfqbhvulxt1y2
クラスタからの出口
docker swarm leave
exitコマンドの後に、ノードをオフライン。
docker@default:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
5mohlisxbrkogfbtzk6nujkfw * default Ready Active Leader 19.03.5
qqgd4abpjw08lwh31ddgez041 work1 Down Active 19.03.5
gblxw2whlxl0k94nmfozhs7gl work2 Ready Active 19.03.5
参照
https://www.cnblogs.com/ityouknow/p/8903975.html