Windows上にjulia-lang実行用のDocker環境を作る

VirtualBox, Vagrant,  Container Linux を使います

## 概要
julia-lang のdockerイメージを動かしたいので
windows 機へ docker 実行環境を作りたい

- VirtualBox:仮想化ソフトウェア
- Vagrant:仮想化環境を操作するためのツール。
- Container Linux:Docker実行用に特化した Linux. 内容は固定されていて, update は ```vagrant box update```で行う.以前はCoreOSという名称.

## 環境構築
- windows 10 pro で環境を構築しました

1. [Downloads_Old_Builds_5.1 – Oracle VM VirtualBox](https://www.virtualbox.org/wiki/Download_Old_Builds_5_1)から次の二つの最新版をダウンロードし、順にインストールします
 - VirtualBox 5.1.30 platform packages
 - VirtualBox 5.1.30 Oracle VM VirtualBox Extension Pack
 - (VirtualBox 5.2.0 は windows版 vagrant 2.0.0 では対応していませんでした. 2017/10/20)
2. [Download - Vagrant by HashiCorp](https://www.vagrantup.com/downloads.html)から最新版をダウンロードしインストールします
 - Vagrant 2.0.0 (windows 64bit版)
 - インストール後、再起動を要求されます
3. container linux 用のディレクトリを用意
 - 
```
mkdir C:\Users\user\projects\vms
```
4. container linux の Vagrantfile を 配備
(```powershell```での作業)

```bat
cd C:\Users\user\projects\vms
# git を使っていれば
git clone https://github.com/coreos/coreos-vagrant 
# zip でダウンロードして展開
Invoke-WebRequest -Uri "https://github.com/coreos/coreos-vagrant/archive/master.zip" -OutFile ./coreos.zip
Expand-Archive ./coreos.zip -DestinationPath ./
# ディレクトリ移動
cd .\coreos-vagrant-master\
# ゲストＯＳ作成
vagrant up
```

- コマンド実行ログ例

2017/10/20時点のcoreosバージョンはv1562.1.0でした.
更新があれば```vagrant box update``` でアップデートできます

```bat
PS C:\Users\user\projects\vms\coreos-vagrant-master> vagrant up
Installing plugins: vagrant-ignition
Installing the 'vagrant-ignition' plugin. This can take a few minutes...
Fetching: vagrant-share-1.1.9.gem (100%)
Fetching: vagrant-ignition-0.0.3.gem (100%)
Installed the plugin 'vagrant-ignition (0.0.3)'!
Bringing machine 'core-01' up with 'virtualbox' provider...
==> core-01: Box 'coreos-alpha' could not be found. Attempting to find and install...
    core-01: Box Provider: virtualbox
    core-01: Box Version: >= 0
==> core-01: Loading metadata for box 'https://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant_virtualbox.json'
    core-01: URL: https://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant_virtualbox.json
==> core-01: Adding box 'coreos-alpha' (v1562.1.0) for provider: virtualbox
    core-01: Downloading: https://alpha.release.core-os.net/amd64-usr/1562.1.0/coreos_production_vagrant_virtualbox.box
    core-01: Progress: 100% (Rate: 20.8M/s, Estimated time remaining: --:--:--)
    core-01: Calculating and comparing box checksum...
==> core-01: Successfully added box 'coreos-alpha' (v1562.1.0) for 'virtualbox'!
==> core-01: Importing base box 'coreos-alpha'...
==> core-01: Configuring Ignition Config Drive
==> core-01: Matching MAC address for NAT networking...
==> core-01: Checking if box 'coreos-alpha' is up to date...
==> core-01: Setting the name of the VM: coreos-vagrant-master_core-01_1508432850002_92455
==> core-01: Clearing any previously set network interfaces...
==> core-01: Preparing network interfaces based on configuration...
    core-01: Adapter 1: nat
    core-01: Adapter 2: hostonly
==> core-01: Forwarding ports...
    core-01: 22 (guest) => 2222 (host) (adapter 1)
==> core-01: Running 'pre-boot' VM customizations...
==> core-01: Booting VM...
==> core-01: Waiting for machine to boot. This may take a few minutes...
    core-01: SSH address: 127.0.0.1:2222
    core-01: SSH username: core
    core-01: SSH auth method: private key
==> core-01: Machine booted and ready!
==> core-01: Setting hostname...
==> core-01: Configuring and enabling network interfaces...
```

- vagrant 初回起動時は ruby のインストールダイアログが現れます

## vagrant 操作
- 起動 ```vagrant up```
- 停止 ```vagratn halt```
- ssh接続 ```vagrant ssh```
- virtualbox host 側と guest OS についてのポートフォーワーディングなどの設定は、Vagrantfile に記述します

### Vagrantfile 設定
- coreos で実行する jupyter-notebook にホスト側から接続するためポートフォワードを設定する

```bat
# Vagrantfile 35行目を変更
$forworded_ports = {8888=>8888}
```
- notepad で編集すると、エンコーディングや、ファイルフォーマットが崩れてしまうため、変更済みのVagrantfile をダウンロードして上書きいただいても.

```bat
Invoke-WebRequest -Uri "https://gist.githubusercontent.com/ysaito8015/fc046e45bffa9d0c996544bc6a07abba/raw/ceac932cda2a3b79bb929afff9db55b51ec555e5/Vagrantfile" -OutFile .\Vagrantfile
```

## docker 実行
```bat
PS> vagrant ssh
PS> docker --version
Docker version 17.09.0-ce, build afdb6d4
```
## 参考にさせていただいた記事
[Windows上にDocker環境を作る (VirtualBox + Vagrant + Container Linux)](https://backport.net/blog/2017/07/06/docker_on_windows/)