こんにちはみなさん
今回はしょうもないことでふらふらと調べまわった挙句、
それほど困るものでもなかった問題に遭遇したので、
とりあえず備忘録として挙げたものです
Docker Toolbox
今回はいろいろ面倒になったので、Docker Toolboxでdocker環境をオールインワンで突っ込んでいます
Docker Toolbox は docker を動かすために十分な環境を用意するためのインストーラです。
これを使用すると、windowsだろうがmacだろうが、ネイティブのコマンドライン上でdockerコマンドを使えるようになります
一昔前のboot2dockerですな
インストールが完了すると「Docker Quickstart Terminal」というアイコンが出てきて、これを起動すると、dockerを動かすための環境をセットアップして、動作環境を整備した状態にしてくれます
Docker Machine
Docker Toolbox の肝はDocker Machine を起動させて、windows や mac でdockerコマンドを使えるようにするということです。
で、Docker Machineというのは、Dockerを使えるようにするための仮想環境を立ち上げ、その環境を通してdockerを使えるようにするものです。
この際立ち上がっている仮想マシンは boot2docker というdocker を動かすためのディストリビューションだそうです
「Docker Quickstart Terminal」で起動したターミナル上では、起動したDocker Machineの作成時の状態を以下のコマンドで確認できます
docker-machine inspect
ここでMemory のサイズを見ると、
"Memory": 1024,
で、普通だったらこれでも十分なのですが、
機械学習のようなメモリをバカ食いするような処理では、
静かにkill される可能性があります
メモリを増やす
docker コンテナに任意のメモリを割り当てる方法は、runするときに以下のオプションをつければいいです
docker run -m 1024m hoge /bin/bash
しかし、コンテナに割り当てるメモリを増やすには、そもそも仮想マシンに割り当てたメモリを増やす必要があります
で、メモリの増やし方なのですが、とても原始的な手段に走りました
docker-machineが使用している仮想環境は、VirturalBox 上に存在します
というわけで、まずいったんマシンを止めます
docker-machine stop
次にVirturalBoxの管理画面を開きます
今まで入れたことがなくても、Docker Toolbox 入れたら勝手に入っています
すると、「default」という名前の仮想イメージがあるので、こいつを選択した状態で設定アイコンを押してやります
設定画面でシステムを選択し、メモリスライダを好きなように動かしてやり、OKを押します
以上で設定が終わったので、起動します
私は不安だったので、再度「Docker Quickstart Terminal」起動させました
確認する
最後に確認しましょう
ターミナルの軌道が完了したら、適当なコンテナに任意のメモリをくっつけて起動させてみます
docker run -it --rm -m 8g hoge /bin/bash
で、freeで確認すると
root@82880b1c54d8:/# free
total used free shared buffers cached
Mem: 8168428 220220 7948208 132696 8796 137844
-/+ buffers/cache: 73580 8094848
Swap: 2986560 0 2986560
こんな感じでメモリが8GBに増やせました
まとめ
気が付いたら、ただの VirturalBox のメモリ割り当ての解説になっていたでござるの巻
Docker Toolboxがどういう設定しているかはわかりにくいけど、やっていることは仮想マシン動かして、
そのうえでDocker動かしているだけなんで、それほどブラックボックスな感じはせんですな
参考
https://docs.docker.com/machine/overview/
http://qiita.com/spesnova/items/073dd64a8a1d580d9ae9