boot2dockerの使い方


現状、Macでdockerを使うなら[boot2docker](http://boot2docker.io/)が一番便利。

自分の中では、Tiny Core Linuxという軽量LinuxのVMを簡単なコマンドで設定して動かしてくれ、dockerコマンドをMacのターミナル上で直接打てるようにしてくれるものという理解。DockerはLinuxカーネルを前提にしているのでLinux以外のOSだとVM以外では動かないという問題を分かりやすく解決している。

## インストール

以下を参考にインストールまたはアップデート
https://docs.docker.com/installation/mac/

```bash
$ boot2docker init
```

をすると必要な物がダウンロードされ、設定ファイルが`~/.boot2docker/`以下に作られる。

## 起動

```bash
$ boot2docker start
```

で、VMが立ち上がり、今後mac上で`docker`コマンドが打てるようになる。

試しに、以下のコマンド等を試してみよう。

```bash
$ docker run hello-world
$ docker run -it ubuntu bash
```

ちなみに、`boot2docker up`, `boot2docker boot`も同じ意味。

逆に止める方法は以下の3種類のいずれかで可能。

```bash
$ boot2docker stop|down|halt
```

## ネットワーク接続

boot2dockerは結局はvmで動かしているので、ネットワークを介してアクセスする時は注意が必要。たとえ、`docker run -p`オプションでポートを開放しても`localhost`にアクセスしても、何も起こらない。

```bash
$ boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103
```

例えば、以下のコマンドでnginxを起動したら、

```bash
$ docker run --rm -i -t -p 80:80 nginx
```

この後ブラウザで、`localhost`にアクセスするのではなく、`192.168.59.103`にアクセスすれば、nginxのwelcome画面を見ることができる。

この部分は、特にLinux用に書かれたdockerのドキュメントを追っている時に注意が必要。

## その他

他にもコマンドがいくつかあるが、大した数がないので自分で`--help`などを使い調べてみるとよい。`info`とかは自分もよく使う。

```bash
$ boot2docker
Usage: boot2docker [<options>] {help|init|up|ssh|save|down|poweroff|reset|restart|config|status|info|ip|shellinit|delete|download|upgrade|version} [<args>]
```

```bash
$ boot2docker --help
Usage: boot2docker [<options>] <command> [<args>]

Boot2Docker management utility.

Commands:
   init                Create a new Boot2Docker VM.
   up|start|boot       Start VM from any states.
   ssh [ssh-command]   Login to VM via SSH.
   save|suspend        Suspend VM and save state to disk.
   down|stop|halt      Gracefully shutdown the VM.
   restart             Gracefully reboot the VM.
   poweroff            Forcefully power off the VM (may corrupt disk image).
   reset               Forcefully power cycle the VM (may corrupt disk image).
   delete|destroy      Delete Boot2Docker VM and its disk image.
   config|cfg          Show selected profile file settings.
   info                Display detailed information of VM.
   ip                  Display the IP address of the VM's Host-only network.
   shellinit           Display the shell commands to set up the Docker client.
   status              Display current state of VM.
   download            Download Boot2Docker ISO image.
   upgrade             Upgrade the Boot2Docker ISO image (restart if running).
   version             Display version information.

Options:
      --basevmdk="": Path to VMDK to use as base for persistent partition
      --dhcp=true: enable VirtualBox host-only network DHCP.
      --dhcpip=192.168.59.99: VirtualBox host-only network DHCP server address.
  -s, --disksize=20000: boot2docker disk image size (in MB).
      --dockerport=0: host Docker port (forward to port 2376 in VM). (deprecated - use with care)
      --driver="virtualbox": hypervisor driver.
      --hostip=192.168.59.3: VirtualBox host-only network IP address.
      --iso="/Users/aikawa/.boot2docker/boot2docker.iso": path to boot2docker ISO image.
      --iso-url="https://api.github.com/repos/boot2docker/boot2docker/releases": source URL to provision the boot2docker ISO image.
      --lowerip=192.168.59.103: VirtualBox host-only network DHCP lower bound.
  -m, --memory=2048: virtual machine memory size (in MB).
      --netmask=ffffff00: VirtualBox host-only network mask.
      --no-dummy="": Example parameter for the dummy driver.
      --retries=75: number of port knocking retries during 'start'
      --serial=false: try serial console to get IP address (experimental)
      --serialfile="": path to the serial socket/pipe.
      --ssh="ssh": path to SSH client utility.
      --ssh-keygen="ssh-keygen": path to ssh-keygen utility.
      --sshkey="/Users/aikawa/.ssh/id_boot2docker": path to SSH key to use.
      --sshport=2022: host SSH port (forward to port 22 in VM).
      --upperip=192.168.59.254: VirtualBox host-only network DHCP upper bound.
      --vbm="VBoxManage": path to VirtualBox management utility.
      --vbox-share=[]: (defaults to '/Users=Users' if no shares are specified; use 'disable' to explicitly prevent any shares from being created) List of directories to share during 'up|start|boot' via VirtualBox Guest Additions, with optional labels
  -v, --verbose=false: display verbose command invocations.
      --vm="boot2docker-vm": virtual machine name.
      --waittime=300: Time in milliseconds to wait between port knocking retries during 'start'
error in run: config error: pflag: help requested
```