VirtualBox
docker
docker-machine

Docker machine のメモリを増やす方法

More than 1 year has passed since last update.

こんにちはみなさん

今回はしょうもないことでふらふらと調べまわった挙句、
それほど困るものでもなかった問題に遭遇したので、
とりあえず備忘録として挙げたものです

Docker Toolbox

今回はいろいろ面倒になったので、Docker Toolboxでdocker環境をオールインワンで突っ込んでいます

https://www.docker.com/products/docker-toolbox

Docker Toolbox は docker を動かすために十分な環境を用意するためのインストーラです。
これを使用すると、windowsだろうがmacだろうが、ネイティブのコマンドライン上でdockerコマンドを使えるようになります
一昔前のboot2dockerですな
インストールが完了すると「Docker Quickstart Terminal」というアイコンが出てきて、これを起動すると、dockerを動かすための環境をセットアップして、動作環境を整備した状態にしてくれます

WS000000.JPG

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 入れたら勝手に入っています

WS000001.JPG

すると、「default」という名前の仮想イメージがあるので、こいつを選択した状態で設定アイコンを押してやります

WS000002.JPG

設定画面でシステムを選択し、メモリスライダを好きなように動かしてやり、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