docker-machine + さくらのクラウドでお手軽リモートdockerするよ


docker-machineからさくらのクラウド上の仮想サーバを使えるようにするプラグイン
[docker-machine-sakuracloud](https://github.com/yamamoto-febc/docker-machine-sakuracloud)をリリースしました。

[docker-machine-sakuracloud](https://github.com/yamamoto-febc/docker-machine-sakuracloud)を使ってさくらのクラウド上に作ったサーバ上でdockerを動かしてみます。

## docker-machine-sakuracloudのインストール

#### Linux or Mac の場合
docker-machine-driver-sakuracloudバイナリをダウンロードし、パス($PATH)の通った場所に配置します(/usr/local/bin/など)。配置後にchmod +xしておいてください。

`/usr/local/bin/`配下に配置する場合のコマンド例

```sh
curl -L https://github.com/yamamoto-febc/docker-machine-sakuracloud/releases/download/v0.0.13/docker-machine-driver-sakuracloud-`uname -s`-`uname -m` >/usr/local/bin/docker-machine-driver-sakuracloud && \
  chmod +x /usr/local/bin/docker-machine/docker-machine-driver-sakuracloud
```

docker-machine-driver-sakuracloudの最新のバイナリはこちらの["Releases"ページ](https://github.com/yamamoto-febc/docker-machine-sakuracloud/releases/latest)からダウンロードできます。

#### Windowsの場合

[Docker Toolbox](https://www.docker.com/docker-toolbox)からインストーラをダウンロード&インストールしておきます。
次に、docker-machine-sakuracloudのインストーラを[こちら](https://github.com/yamamoto-febc/docker-machine-sakuracloud/releases/download/v0.0.13/DockerMachineSakuracloudSetup.exe)からダウンロード&インストールします。

[2017/11/9 追記]
現在Windows版インストーラーについては最新版の配布を行っていません。
["Releases"ページ](https://github.com/yamamoto-febc/docker-machine-sakuracloud/releases/latest)から最新のバージョンをダウンロードしPATHの通ったフォルダに配置してください。

#### 動作確認

コンソールで以下コマンドを実行してみましょう。指定できるオプションなどが表示されます。

```console
docker-machine create -d sakuracloud -h
```

## さくらのクラウド:APIキー取得

さくらのクラウドのコントロールパネルにログインし「設定」から「APIキー」を追加し、以下の情報を控えておきます。

 - ACCESS TOKEN
 - ACCESS TOKEN SECRET

## docker-machineで新しいマシン作成

早速docker-machineで新しいマシンを作ります。

docker-machineではドライバを指定することで
dockerを稼働させるマシンをどこに作るかを指定します。

今回はドライバにsakuracloudを指定することでさくらのクラウド上にマシンを作ります。

では以下コマンドを実行してみましょう。

```console
$ docker-machine create -d sakuracloud \
    --sakuracloud-access-token=[ACCESS TOKEN] \
    --sakuracloud-access-token-secret=[ACCESS TOKEN SECRET] \
    sakura-dev

```

[ACCESS TOKEN]と[ACCESS TOKEN SECRET]には先ほど控えた値を入力してください。
しばらく待つとさくらのクラウド上にマシン`sakura-dev`が追加されます。

```console(出力例)
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...

To see how to connect Docker to this machine, run: docker-machine env sakura-dev
```

無事終わりましたね。コントロールパネルにも表示されているはずです。
***コントロールパネルに表示されない場合は石狩第１ゾーンが選択されているか確認してください。***

作成されたら試しにSSH接続してみましょう。

```console
$ docker-machine ssh sakura-dev
```

![kobito.1447166811.348180.png](https://qiita-image-store.s3.amazonaws.com/0/20668/5d24af6d-0946-db10-bed6-547cf3849815.png "kobito.1447166811.348180.png")


バッチリつながりましたね。

#### (補足)SSH接続について
docker-machineでマシンを作成すると、~/.docker/machine/machines/[作成したマシン名]配下に
`id_rsa`と`id_rsa.pub`が作成されます。
docker-machine sshするときはここの`id_rsa`が使われます。

## docker-machineで複数のマシンがある場合

docker-machineで管理しているマシンは以下コマンドで確認します。

```console
$ docker-machine ls

NAME          ACTIVE   DRIVER        STATE     URL                         SWARM
default      -        virtualbox    Stopped                               
sakura-dev    -        sakuracloud   Running   tcp://133.242.68.228:2376   
```

`docker`コマンドでの接続先はACTIVE列に*があるマシンとなります。
今のままだとdockerコマンドでsakura-devに繋げないので、以下コマンドでsakura-devをアクティブにします。

```console
$ eval "$(docker-machine env sakura-dev)" #sakura-devをACTIVEに

$ docker-machine ls

NAME          ACTIVE   DRIVER        STATE     URL                         SWARM
default      -        virtualbox    Stopped                               
sakura-dev    *        sakuracloud   Running   tcp://133.242.68.228:2376   
```

ちゃんとsakura-devがACTIVEになりました。

## dockerコマンドを実行してみる

いよいよdockerコマンドを実行してみましょう。

```console
$ docker run -it --rm busybox
```

![kobito.1447167923.896654.png](https://qiita-image-store.s3.amazonaws.com/0/20668/e239fffa-6035-edc4-7875-e14c2ef45ff7.png "kobito.1447167923.896654.png")

さくらのクラウド上の仮想マシン上のdockerでbusyboxを動かすことができました。

後は別のコンテナを試してみたり、docker-composeを動かしてみたりとご自由にどうぞ(^^)

## 後片付け

さくらのクラウドはマシンを停止していても時間単位で課金されます。
使わなくなったマシンはきちんと後片付けしましょう。

```console
$ docker-machine rm sakura-dev
```

これで作成した仮想マシン(ディスクも)が削除されます。
お財布に優しくて安心ですね!


## 最後に

さくらのクラウドの2万円クーポンを持て余してる方いますよね？
[docker-machine-sakuracloud](https://github.com/yamamoto-febc/docker-machine-sakuracloud)で快適リモートdocker始めてみませんか？