Dockerに買収されて間もないsocketplaneですが、 ちょっと試してみます。
socketplane/socketplane · GitHub
トライアル用のVagrant環境を中心に説明されていますが、 Non-Vagrantの項を参考に、自前の環境にいれたいと思います。
CentOS7.0で試しましたが、非サポートでいきなりこけます。。
$ curl -sSL http://get.socketplane.io/ | sudo BOOTSTRAP=true sh $ sudo socketplane install Operating System centos is not yet supported. Please contact support@socketplane.io
どうも、ubuntuとfedoraしかサポートしていないと。 負けずに、fedoraだと思わせます。 551行目のlsb_distに、fedoraを代入します。
https://github.com/socketplane/socketplane/blob/master/scripts/socketplane.sh#L551
$ sudo vi /opt/socketplane/socketplane lsb_dist=fedora
ついでに最初のほうに set -x
をつけて、コマンドの様子を見れるようにもしておきます。
そうすると、Open vSwitchのインストールで失敗します。パッケージ一覧にないようです。 下記ページを参考にいれましょう。
CentOS7でOpen vSwitchブリッジ化 - どこかに向かうらしい話
再度インストールすると、dockerイメージを二つほどrunしているようでした。
これが、なかなか権限の強いコンテナになってまして、
--privileged=true
はもちろん、-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /proc:/hostproc -e PROCFS=/hostproc --net=host
などと、ホストを直接いじりまくれる感じになっています。
インストール後の起動コンテナ
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fde45e1d7068 clusterhq/powerstrip:v0.0.1 "twistd -noy powerst 6 seconds ago Up 5 seconds powerstrip 53c7c2b70b50 socketplane/socketplane:latest "socketplane --iface 10 minutes ago Up 10 minutes socketplane
フロントエンドは shellで動いていて、バックエンド(agentと呼ばれるもの)は、Go製のバイナリで動いているようです。
コンテナの起動は、dockerと同じ引数をsocketplaneに渡せばよい。
$ sudo socketplane run -i -t ubuntu /bin/bash # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 7: ovsbebd552: <BROADCAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UNKNOWN link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff inet 10.1.0.2/16 scope global ovsbebd552 valid_lft forever preferred_lft forever inet6 fe80::80d1:afff:feab:25e2/64 scope link valid_lft forever preferred_lft forever [root@b2fcc25d8104 /]# ip l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 7: ovsbebd552: <BROADCAST,UP,LOWER_UP> mtu 1440 qdisc noqueue state UNKNOWN mode DEFAULT link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
ovsらしきlink名に、10.1.0.2/16のIPアドレスが付与されていることがわかる。
ホスト側で、$ sudo socketplane info
を打つと、JSON形式でコンテナのネットワーク情報が表示されました。
ネットワークを作ってコンテナを立ち上げる場合は、 下記のようにすると指定したサブネット内から、IPが払い出されます。
$ sudo socketplane network create web 10.2.0.0/16 $ sudo socketplane run -n web -itd ubuntu
sudo socketplane network list
で、ネットワークの一覧が表示されます。
[ { "gateway": "10.1.0.1", "id": "default", "subnet": "10.1.0.0/16", "vlan": 1 }, { "gateway": "10.2.0.1", "id": "web", "subnet": "10.2.0.0/16", "vlan": 2 } ]
ネットワーク名を指定しなかった場合、default
というネットワークが適用されていることが
わかりますね。
ログの流れやシェルの中身を見たところ、下記の流れになっていました。
docker run --net=none -d
で、バックグラウンド実行した後、
socketplaneのコンテナ(port:6675)に、POSTしてネットワーク追加。
起動直後は、IP付与されていないことになるのが少し気になりました。 かといって、createしてからstartとしても、プロセス実行前は netnsとかで操作対象が無いのだろうと思います。。 やっぱ Native Dockerに、この機能が入るのが正しい気がしてきました。
Weaveみたいに、静的なIP設計はできないのかな。 マルチホストの手順、というかコンテナ間の連携の手順を知りたかったのですが、 READMEのチュートリアルには書いていなかったので、また今度。 clusterあたりかな。
以下、ヘルプからコマンドリスト抜粋
help install [unattended] [nopowerstrip] uninstall clean ★依存関係のあったソフトも削除?uninstallとの差分は、たぶんOVS消すこと。 deps agent {stop|start|restart|logs} info [container_id] run [-n foo] <docker_run_args> start <container_id> stop <container_id> rm <container_id> attach <container_id> cluster bind <interface> cluster join <address> cluster leave network list network info <name> network create <name> [cidr] network delete <name> [cidr] network agent start ★こんなコマンドはない。誤記。 network agent stop ★こんなコマンドはない。誤記。