Adachinですっ。

2013年から始まった自宅サーバ(実家)。
最初のブログとか見ると3年前の自分は非常に知識不足だったと改めて感じましたw(恥ずかしいレベル)
2015年から仮想コンテナ技術(docker)が発表され、インフラ構築方法も変わり始めました。
新時代の幕開けとしてインフラコンテナ技術を勉強しないとまずい!!
2016年AWSでlambdaが発表されサーバレスも流行りだし、
どんどん新技術には手を出さないとまずい!!

今回は新たなるチャレンジとして、大学時代に作った自作サーバ(windows/いろいろカスタマイズ)
をDockerサーバに転用したいなと今年の3月くらいに感じ、
2016/10/14金曜日に友人(くにしー)と構築したのでブログにまとめます。
用途としては問題なくサービスが運営できるか、検証機器としてです。

下記の画像では左上が現Adachin-Server-Lab(ブログ)が動いており、
右上が今回dockerサーバとなります。後ほどスペックなど紹介していきます。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-16-0-46-16


■雑な自宅ネットワーク構成図(実家)

基本ルーターでポートを開放してあげてます。
セキュリティとしてdockerサーバには外部からログインできないよう、
adachin-serverを踏み台としてsshできるようにしました。
ここらへんはラズベリーパイをかましたいところ。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-16-0-57-54


■dockerサーバスペック

・Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz/
仮想コア数も含めて8個

・メモリー10GB
・HDD 1TB


■CoreOSのインストール

CoreOSはdockerに特化されてて、デフォルトでdockerパッケージ系はすべてインストールされています。
CentOS7もサポートされてますが、せっかくなのでCoreOSでやりました。

https://coreos.com/os/docs/latest/booting-with-iso.html

とりあえずCoreOS自体容量少ない(136MB)ので、USBからマウントしてインストールしよう!
となりました。BIOSからUSBを優先度1にして起動してみたが、うまくいかなかった。。
ちなみにUSBではこんな作業をしてました。

Diskに焼くしかないな、しかし余ったDiskもないじゃねえか!!
と悩んだ挙句、公式にはこんなことを書いてありました。

https://coreos.com/os/docs/latest/installing-to-disk.html

The script is self-contained and located on GitHub here and can be run from any Linux distribution.
You cannot normally install CoreOS to the same device that is currently booted.
However, the CoreOS ISO or any Linux liveCD will allow CoreOS to install to a non-active device.

訳)
スクリプトはGitHub上にあり、
すべてのLinuxディストリビューションから実行することができます。
通常は現在ブートされているのと同じデバイスにCoreOSをインストールすることはできません。
しかしCoreOS ISOまたは任意のLinuxのLiveCDはCoreOSが非アクティブデバイスにインストールすることができます。

つまり、Linux上からスクリプトを叩いてインストールできる!!!
というわけでくにしーが持参してたUSBの中にTails Linuxがあったので、
こいつから以下のスクリプトを叩いてみました。
しかし、Tails Linuxとか半端ないセキュアLinuxで、
自分が操作したログなど全部残さず抹消してしまいます。
これはぱないのであとでUSBにインストールしてみよう。4515379_3_97ae_tails-le-systeme-amnesique-et-incognito_df5e7571e8ea1d018644d281696336d3

・coreos-install.sh

・インストール

完了したらログインできるか確認してみた。
できないw
ググるとどうやらデフォルトのユーザーはcoreみたいだが、
パスは設定されていないことが分かった。
なんというセキュア。。てかどうすんだ。。
とりあえず公式にはこんなことが書いてあった。

https://coreos.com/os/docs/latest/booting-with-pxe.html

coreos.autologin: Drop directly to a shell on a given console without prompting for a password.
Useful for troubleshooting but use with caution.
For any console that doesn’t normally get a login prompt by default be sure to combine with the console option, e.g.
console=tty0 console=ttyS0 coreos.autologin=tty1 coreos.autologin=ttyS0.
Without any argument it enables access on all consoles.
Note that for the VGA console the login prompts are on virtual terminals (tty1, tty2, etc),
not the VGA console itself (tty0).

訳)
ログインプロンプトにautologinをぶち込めば一時的にログインしてやるぜ!

ちなみにCoreOSはCloud-Configに対応(AWSやDigitalOceanも)しており、
OS起動時にネットワーク、ユーザ、systemd、などなど設定してくれるのですが、
完全に忘れてました。。w
以下のようにymlファイルを作ってCoreOSインストール時に指定すれば上記なことをする必要ありません。

・CoreOSインストールとcloud-config


■CoreOS初期設定

・ユーザーパス変更

・固定IPの変更

・ホスト名変更

・ログインシェルの変更

カッコいい。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-16_2_57_13


■コンテナ起動

あとはDNSでサブドメインの設定とルーターのポートを開けて、実際にnginxが動いてることを確認しました。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-16_3_03_35


■まとめ

毎回ルーターのポートを開放するのはめんどうなので、
プロキシ設定していろいろやりたいところ。
今のところ検証用サーバとして十分。
KVMとかメンドクサイし、コンテナ構成管理楽ちん。
引き続きdockerの検証はブログでアウトプットします。
くにしーいなかったら大変だった。
ありがとうの意味を込めて、
父が酒を作ってたくさん飲んでくれました。%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-10-16-3-13-19
The following two tabs change content below.

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、ランサーズにてサーバ系のお仕事も副業で行い、他社インフラレスポンス改善、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。 そして「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。 現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください