初心者インフラエンジニアがMINCSさわってみた

- DevOptsが流行ってきて、ローカルでの開発や検証が多くなってきた
- Vagrant使い出したが、毎日Destroy→up（休憩時間）で効率わるい
- Dockerやりだした→便利すぐる→ちょっとミスったらrun・stop・run・stop・・・→docker ps -a、docker images→どれで何してたか覚えてないorz

ちょっとしたリリース手順やインストール手順の確認したい時用にこんな記事を見つけたので触ってみた

[シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい](http://d.hatena.ne.jp/defiant/20150701/1435749116)

## 環境

* EC2 + RHEL7.1 + Root権限

```
(´・ω・｀) AWS♪ root$ uname -r
3.10.0-229.11.1.el7.x86_64
(´・ω・｀) AWS♪ root$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.1 (Maipo)
(´・ω・｀) AWS♪ root$ 
```

## ダウンロード

```
(´・ω・｀) AWS♪ root$ git clone https://github.com/mhiramat/mincs.git
Cloning into 'mincs'...
remote: Counting objects: 572, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 572 (delta 5), reused 0 (delta 0), pack-reused 559
Receiving objects: 100% (572/572), 81.82 KiB | 0 bytes/s, done.
Resolving deltas: 100% (344/344), done.
(´・ω・｀) AWS♪ root$ 
```

## 実行

シェルスクリプトなので叩くだけ

```
(´・ω・｀) AWS♪ root$ ./mincs/minc 
(´・ω・｀) AWS♪ root$ 
```

なにも変わってないようだけどコンテナ起動してログインしているし早い！！
環境は実行した環境そのまま引き継ぎで全ファイルもってきている

```
(´・ω・｀) AWS♪ root$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:29 ?        00:00:00 /bin/bash -i
root        70     1  0 14:31 ?        00:00:00 ps -ef
(´・ω・｀) AWS♪ root$ ls /proc/ |grep [0-9]
1
90
91
(´・ω・｀) AWS♪ root$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.1 (Maipo)
(´・ω・｀) AWS♪ root$ ls ~/git/mincs/
install.sh  libexec  LICENSE  marten  minc  polecat  README.md  samples
(´・ω・｀) AWS♪ root$ 
```

コンテナ内なので何しても残らない

```
(´・ω・｀) AWS♪ root$ yum install -y httpd
(´・ω・｀) AWS♪ root$ rpm -qa httpd
httpd-2.4.6-31.el7_1.1.x86_64
(´・ω・｀) AWS♪ root$ which httpd
/sbin/httpd
(´・ω・｀) AWS♪ root$
(´・ω・｀) AWS♪ root$ exit # ホストに戻る
exit
(´・ω・｀) AWS♪ root$ rpm -qa httpd
(´・ω・｀) AWS♪ root$ which httpd
/usr/bin/which: no httpd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/go/bin:/root/bin)
٩(๑òωó๑)۶ AWSだお root$ # ホスト側には残らない
```

環境を全部引き継いでくれることが一番うれしい！
/から全部マウントした環境なので、ローカルインストールしていたエディタやコンパイラの設定などもそのまま引き継ぐので、コンパイルはMINCS上でやればローカル汚れないし、いちいち設定修正する度にDocker commitしまくってどれが何？状態にならない

```
(´・ω・｀) AWS♪ root$ go version
go version go1.5.1 linux/amd64
(´・ω・｀) AWS♪ root$ ./mincs/minc
(´・ω・｀) AWS♪ root$ go version
go version go1.5.1 linux/amd64
(´・ω・｀) AWS♪ root$
```

## 保存したいとき


```
(´・ω・｀) AWS♪ root$ ./mincs/minc
(´・ω・｀) AWS♪ root$ export PS1='MINC コンテナ上$ ' # わかりやすくするため
MINC コンテナ上$ 
MINC コンテナ上$ yum install -y httpd
MINC コンテナ上$ ll /etc/httpd/
total 4
drwxr-xr-x. 2 root root   35 Sep 14 15:05 conf
drwxr-xr-x. 2 root root   78 Sep 14 15:05 conf.d
drwxr-xr-x. 2 root root 4096 Sep 14 15:05 conf.modules.d
lrwxrwxrwx. 1 root root   19 Sep 14 15:05 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root   29 Sep 14 15:05 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root   10 Sep 14 15:05 run -> /run/httpd
MINC コンテナ上$
```

実際にはホスト上の/tmp/mincxxxx/storage/をマウントしている

```
(´・ω・｀) AWS♪ root$ export PS1='EC2のホスト$ ' # わかりやすくするため
EC2のホスト$ ll /tmp/minc3093-5ldwq6/storage/etc/httpd/
total 8
drwxr-xr-x. 5 root root   86 Sep 14 15:05 .
drwxr-xr-x. 6 root root 4096 Sep 14 15:05 ..
drwxr-xr-x. 2 root root   35 Sep 14 15:05 conf
drwxr-xr-x. 2 root root   78 Sep 14 15:05 conf.d
drwxr-xr-x. 2 root root 4096 Sep 14 15:05 conf.modules.d
lrwxrwxrwx. 1 root root   19 Sep 14 15:05 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root   29 Sep 14 15:05 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root   10 Sep 14 15:05 run -> /run/httpd
EC2のホスト$ 
```

mincxxxx 配下をそのままコピる

```
EC2のホスト$ rsync -a /tmp/minc3093-5ldwq6/* ~/httpdインストールしたやつ
```

-t でマウント先を指定してmincを起動

```
EC2のホスト$ ./mincs/minc -t ~/httpdインストールしたやつ
(´・ω・｀) AWS♪ root$ ll /etc/httpd/
total 4
drwxr-xr-x. 2 root root   35 Sep 14 15:05 conf
drwxr-xr-x. 2 root root   78 Sep 14 15:05 conf.d
drwxr-xr-x. 2 root root 4096 Sep 14 15:05 conf.modules.d
lrwxrwxrwx. 1 root root   19 Sep 14 15:05 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root   29 Sep 14 15:05 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root   10 Sep 14 15:05 run -> /run/httpd
(´・ω・｀) AWS♪ root$
```

いろいろ応用は効きそう