CoreOSとPortainerで簡単コンテナ管理

このブログは[Bluemix(SoftLayer) Advent Calendar 2016](http://qiita.com/advent-calendar/2016/bluemix)の12月20日のエントリーです。

# はじめに
最近、手っ取り早く、HDP (Hortonworks Data Platform) 2.5のSandboxを試すことができる環境をいろいろ探しているのですが、現状CoreOSをデプロイできるクラウドを利用するのが簡単だと思います。すでに、[Docker (EC2)](http://www.stay-ko.be/hadoop/hdp_on_ec2)、[Rancher(SoftLayer)](http://qiita.com/cyberblack28/items/531cb3338581b5076e10)、[Docker(Packet)](http://qiita.com/kkitase/items/0d27293c00f87486db2f)で試す方法が紹介されていますが、ここでは、CoreOS (SoftLayer) + Portainerで試す方法を紹介します。

### HDP (Hortonworks Data Platform) 2.5のSandboxとは
[Hortonworks](http://jp.hortonworks.com)が提供するApache Hadoop、Apache Sparkなどをパッケージしたイメージになります。Docker、VMware、Virtual Box、Azureのイメージなどがあります。VMware、Virtual Boxを利用するとローカルで試せますが、イメージサイズが大きいので、クラウド上で試す事をお勧めします。Azureであれば、sandboxがすでにマーケットプレイスにあります。[こちら](http://qiita.com/kkitase/items/1d2e4662c2e8c9b0fd59)を参照。AWSであれば、Hortonworks Data Cloud for AWSを利用すれば簡単に試せます。[こちら](http://uprush.tumblr.com/post/154540993864/introduction-to-hortonworks-data-cloud-for-aws)を参照。他のクラウドであれば、Docker環境に展開することをお勧めしています。

### CoreOSとは
RancherOSなどと同じDocker環境込みのディストリビューションです。RancherOSと比べ基本的なLinuxコマンドを使用することができます。

## IBM Bluemix Infrastracture (旧SoftLayer)で、CoreOSをデプロイ
IBMが提供するパブリッククラウドのIaaSサービスです。ベアメタルサーバーを利用できる事で知られています。今年9月までは「SoftLayer」というブランド名で提供していましたが、今年10月より、Bluemixブランドに統合され、正式名「IBM Bluemix Infrastructure」として提供されるようになりました。機能などは変わらず提供されますし、また新しく韓国などにもデータセンターができているようです。Bluemix Infrastractureでは、CoreOSを選択する事ができるので、こちらを利用したいと思います。

まずは、[カスタマーポータル](https://control.softlayer.com/)にアクセス、ログインます。

IBMidに変更しろと言われますが、私は今の所変更しません。
<img width="404" alt=" 2016-12-20 18.29.17.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/61a6665a-ff3f-4c0a-e5f3-cd0f5e90c988.jpeg">

Bluemix Infrastractureのカスタマーポータル
<img width="1187" alt=" 2016-12-20 18.31.31.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/790c7ede-78a1-4336-28f3-6d2b3391bf01.jpeg">

ベアメタルサーバー (CoreOS) をオーダー
<img width="962" alt=" 2016-12-20 18.33.08.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/d6e6a36a-0558-06ae-7b08-c1b201c40868.jpeg">

## Portainerを試してみる

### Portainerとは
[Portainer](http://portainer.io)は、とってもシンプルなコンテナ管理ポータルです。特に今回のようなケースでは、dockerコマンドだけで十分なのですが、私のようなDocker初心者にとっては、このようなUIがあるととっても分かりやすいので紹介します。詳細は[Github](https://github.com/portainer/portainer)を参照するといいでしょう。ドキュメント系は[こちら](https://portainer.readthedocs.io/en/latest/deployment.html#connect-to-a-local-docker-engine)。

PortainerのWebサイト
<img width="1020" alt=" 2016-12-20 18.23.35.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/3b8a636d-f20a-8c49-3d5e-4a08f747d255.jpeg">



### Portainerのインストール
```
# git clone https://github.com/portainer/portainer.git
# docker run -d -p 7000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer --logo "http://hortonworks.com/wp-content/uploads/2016/02/HWX-RGB-full-no-tagline-reverse.png"
★ --logo でロゴを変更できます。
```
ダッシュボード
<img width="1268" alt=" 2016-12-20 12.42.48.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/bf8e7c43-1ab0-2113-7364-328f3f432e8e.jpeg">

コンテナのリソース使用率
<img width="1269" alt=" 2016-12-20 13.47.09.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/3109747f-8fdf-a116-685e-5e3f1a1143c2.jpeg">

コンソールに接続
<img width="1263" alt=" 2016-12-20 13.52.35.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/66367599-f97b-53d5-e62f-725c4556e717.jpeg">

App template
<img width="1260" alt=" 2016-12-20 14.08.05.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/0d5ad433-04d6-af7e-51dc-3ca4f2f18cff.jpeg">

## HDP Sandboxを試してみる
Docker上での展開は既にいくつかの記事で紹介されていますが、念のためコマンドを載せておきます。

```
# curl -O http://hortonassets.s3.amazonaws.com/2.5/HDP_2.5_docker.tar.gz
# gunzip HDP_2.5_docker.tar.gz
# docker load < HDP_2.5_docker.tar
# docker run -v hadoop:/hadoop --name sandbox --hostname "sandbox.hortonworks.com" --privileged -d \
-p 3000:3000 \
-p 6080:6080 \
-p 9090:9090 \
-p 9000:9000 \
-p 8000:8000 \
-p 8020:8020 \
-p 42111:42111 \
-p 10500:10500 \
-p 16030:16030 \
-p 8042:8042 \
-p 8040:8040 \
-p 2100:2100 \
-p 4200:4200 \
-p 4040:4040 \
-p 8050:8050 \
-p 9996:9996 \
-p 9995:9995 \
-p 8080:8080 \
-p 8088:8088 \
-p 8886:8886 \
-p 8889:8889 \
-p 8443:8443 \
-p 8744:8744 \
-p 8888:8888 \
-p 8188:8188 \
-p 8983:8983 \
-p 1000:1000 \
-p 1100:1100 \
-p 11000:11000 \
-p 10001:10001 \
-p 15000:15000 \
-p 10000:10000 \
-p 8993:8993 \
-p 1988:1988 \
-p 5007:5007 \
-p 50070:50070 \
-p 19888:19888 \
-p 16010:16010 \
-p 50111:50111 \
-p 50075:50075 \
-p 50095:50095 \
-p 18080:18080 \
-p 60000:60000 \
-p 8090:8090 \
-p 8091:8091 \
-p 8005:8005 \
-p 8086:8086 \
-p 8082:8082 \
-p 60080:60080 \
-p 8765:8765 \
-p 5011:5011 \
-p 6001:6001 \
-p 6003:6003 \
-p 6008:6008 \
-p 1220:1220 \
-p 21000:21000 \
-p 6188:6188 \
-p 61888:61888 \
-p 2181:2181 \
-p 2222:22 \
sandbox /usr/sbin/sshd -D
# ssh -p 2222 root@localhost
# /etc/init.d/startup_script start
```

- `http://<ipaddress>:8888` にアクセスし、スタートページを表示
<img width="1257" alt=" 2016-12-20 13.28.34.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/86717734-dd8b-deef-d7b8-c0501973094a.jpeg">
ADVANCED HDPのQUICK LINKをクリックすると各サービスへのアドレスが表示されます。

- `http://<ipaddress>:8080` にアクセスし、Ambariを表示
<img width="1210" alt=" 2016-12-18 22.14.22.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/42406/a566d7a7-470a-ed14-f78e-4ac9ebf18eb5.jpeg">

---
以上

- 今後の課題（試された方がいらっしゃれば教えていただければと思います。）
 - Bluemix Infrastructureで、ポータブルIPアドレスをオーダーして、CoreOSをマルチホームホスト化し、Sandboxを複数起動
 - PortainerのApp TemplateにHDP Sandboxを登録