2018年2月19日月曜日

docker 17.06 で swarm 機能を試してみた

概要

docker 17.06 で swarm の使い方が変わっていたので試してみました
かなり簡単に使える印象です
Manager と Worker 2 つのノードを作成してどちらも dockerd を起動しておきましょう
ついでなので overlay ネットワークも試してみました

環境

  • Ubuntu 16.04
  • Docker version 17.06.2-ce, build cec0b72

Manager となるノードで初期化する

  • docker swarm init

以下で実行する join 用のコマンドが表示されます

Worker となるノードで join する

  • docker swarm join --token SWMTKN-1-4n6elansbxnaz6iubmy2i171dptprfpflykqn3vjx53ef7kivy-65jhododu1mnkps3s95jfl86j 192.168.100.20:2377

Manager ノードで overlay ネットワークを作成する

  • docker network create -d overlay --attachable overlay1

attachable を指定すると作成したネットワークを手動でアタッチすることができるようになります

  • docker network ls

で作成した overlay ネットワークを確認しましょう
Manager では表示されると思います
Worker 側では表示されません、が普通に使うことができるので試してみます

ちなみに ingress というデフォルトで作成されるネットワークは Manager にも Worker 側にもあります

overlay ネットワークを試してみる

Manager 側でコンテナを起動します

  • docker run -d --net overlay1 -p 80:80 --name nginx nginx

これで overlay ネットワーク上で起動するコンテナが 1 台作成されました
続いて Worker 側のホストでコンテナを起動してみます

  • docker run --rm --net overlay1 --link nginx alpine ping -c 5 nginx

これで実行すると Manager 側のコンテナにアクセスできると思います

Swarm 状態を解除する

まず Worker 側で

  • docker swarm leave

します
Manager 側で

  • docker node ls

を実行してみて leave した Worker 側のホストのステータスが Down になるのを待ちます
Down になったら Manager 側で

docker node rm 7jug2spgk3c1i335shlnmz885

することで Worker を切り離すことができます
Worker 側で docker info を実行すると Swarm の状態が表示されなくなります

最後に Manager 1 台になったら Manager で以下のコマンドを実行すると Manager を切り離せます

  • docker swarm leave --force

ちなみに swarm 状態が解除されると overlay ネットワークも勝手に削除してくれました

最後に

比較的新しめの docker で Swarm 機能を試してみました
かなり簡単に使えるようになっている印象です
昔は Swarm を管理する agent コンテナが起動する必要があったのですがそれはなくても動作するみたいです
KVS を管理する必要があると思うのでどこかで管理しているとは思いますが

0 件のコメント:

コメントを投稿