LoginSignup
11
11

More than 5 years have passed since last update.

Docker でSerf コンテナを起動させるまでメモ

Last updated at Posted at 2014-05-14

「Docker でSerf が動いた、よかったね!」までをメモ。

大まかな手順

  • Serf をインストールしたDocker イメージの作製
  • ローカルにserf agent を待機させる
  • コンテナをたくさん起動して、ローカルのserf メンバーに加わるのを眺める
  • ユーザイベントを発行してみる
  • あとしまつ

前提として、
* ローカルの環境はUbuntu。Docker, Serf インストール済み

ラクしたいひと向け準備
docker pull innocentzero/serf:0.6.0 # 以降 イメージ名はこれに置き換えて

Serf をインストールしたDocker イメージを作製する

Dockerfile を書いたほうがいいけども、今回は手作業で。

コンテナの起動

docker run -i -t ubuntu:trusty /bin/bash

Serf のセットアップ

apt-get update && apt-get -y upgrade
apt-get install -y wget unzip
wget --quiet https://dl.bintray.com/mitchellh/serf/0.6.0_linux_amd64.zip
unzip -f 0.6.0_linux_amd64.zip
mv serf /usr/local/bin/
rm 0.6.0_linux_amd64.zip
exit

コンテナのコミット(イメージの作製)

docker ps -a # で一番新しいコンテナがたぶんそれ。コンテナID をメモ。

# コンテナID は一意に決定できれば先頭数文字で充分
docker commit -m "Installed Serf" -a myusername 19a myusername/serf:0.6.0

docker images | head # でserf のイメージが登録されているのが確認できるはず。

ローカルでSerf の起動

前準備が出来たので 新しいウィンドウでserf agentを叩いてエージェントを起動させる。
そのまえに、ifconfig eth0 なコマンドで、ローカル環境のIP アドレスを調べておくといい。

if config eth0 #=> 192.168.10.3
serf agent
==> Starting Serf agent...
==> Starting Serf agent RPC...
==> Serf agent running!
         Node name: 'ubuntu-local'
         Bind addr: '0.0.0.0:7946'
          RPC addr: '127.0.0.1:7373'
         Encrypted: false
          Snapshot: false
           Profile: lan

Serf イメージをたくさん起動させる

先ほど調べておいたIP アドレスを、コンテナ起動コマンドと一緒に打ち込む。打ち込む。

docker run mysername/serf:0.6.0 serf agent -join 192.168.10.3
docker run mysername/serf:0.6.0 serf agent -join 192.168.10.3
docker run mysername/serf:0.6.0 serf agent -join 192.168.10.3
...

docker run するごとに、ローカルのSerf が新規メンバーの参加を検知してログに出力しているはず

==> Log data will now stream in as it occurs:

    2014/05/15 05:46:20 [INFO] agent: Serf agent starting
    2014/05/15 05:46:20 [INFO] serf: EventMemberJoin: ubuntu-local 192.168.10.3
    2014/05/15 05:46:21 [INFO] agent: Received event: member-join
    2014/05/15 05:46:45 [INFO] serf: EventMemberJoin: c6467948559c 172.17.0.2
    2014/05/15 05:46:46 [INFO] agent: Received event: member-join
    2014/05/15 05:47:29 [INFO] serf: EventMemberJoin: c39e76e589b3 172.17.0.4
    2014/05/15 05:47:30 [INFO] agent: Received event: member-join

イベントの発行をしてみる

また新たにSerf イメージを、今度は対話モードで起動させて、serf event を叩いてみる

docker run -i -t myusername/serf:0.6.0 /bin/bash
serf agent -join 192.168.10.3 & # バックグランドで起動
serf event "hello serf"
exit

ローカルのserf agent に"user-event: hello serf" ログが記録されているのが確認できると思う。
(直接確認は出来ないが、バックグランドで起動させているSerf コンテナにもこのメッセージは届いている。)

あとしまつ

バックグランドで起動しているDocker コンテナをすべて停止させて、コンテナもぜんぶ削除する。

docker stop $(docker ps -q) # 起動しているコンテナの停止
docker rm $(docker ps -a -q)# コンテナの削除

Links


(Serf ってなんだろう...)

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11