素早くDocker環境を用意する

普段から検証で利用したりしているクラウドのサービスに DigitalOcean というサービスがあります。 格安のSSD VPSとして有名ですが確かに安い、そして「早い」です。代替最小の構成で1〜2分でプロビジョニングされます。

みてもらうとわかりますが、最小モデル(512M Memory, 1Core , 2OG SSD)で $0.007/hr($5/month) です。HighPerformanceの最小構成(16GB Memory,8Core,160GB SSD)で $0.238/hr($160/mo) となっています。さっと検証をしたい程度1日程度であれば非常に安く利用することが出来ます。

はじめに

現在(2014/08/09)、$10分のクーポンがあるので更に利用が便利になります。すでにアカウントがある人はポータル画面の左メニューBillingから右上のManage Paymentを選択ししたのPromo Codeに入力をします。

  • CODE:SHIPITFAST10

もしアカウントがまだの場合には、こちらのリンクからはじめてもらえると私が嬉しいです。

使い方

ポータルから作るのは非常に簡単ですが実際にDocker利用したいと思うとコマンドラインからすると思われるのでここではVagrantを利用してサーバのデプロイをしたいと思います。

すでにVagrantの環境は入っているものとします。(まだの方は色々ぐぐってみてください) 以前に入れたままの人はバージョンアップがされているので実行しておきましょう。

古いバージョンではUsername,APIキーと言う形式でしたが現在はToken形式で利用することになります。ポータルからトークンは発行することが出来ます。

$ vagrant plugin install vagrant-digitalocean

実際のVagrantfileのサンプルを以下に載せておきます。

Vagrantfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- mode: ruby -*-
# vi: set ft=ruby :
# vagrant up --provider=digital_ocean --provision

Vagrant.configure('2') do |config|
  config.vm.hostname              = 'docker01'

  config.vm.provider :digital_ocean do |provider, override|
    override.ssh.private_key_path = '~/.ssh/admin'
    override.vm.box               = 'digital_ocean'
    override.vm.box_url           = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"
    provider.token                = 'TOKEN'
    provider.image                = 'Docker 1.1.2 on Ubuntu 14.04'
    provider.region               = 'LON1'
    provider.size                 = '512MB'
    provider.ca_path              = '/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt'
    provider.ssh_key_name         = 'admin'
  end

end

1分で起動が売りなのですが上記の設定で「46秒!」で起動してきます(ポータル上に表示されている時間) 起動は普段通り、$ vagrant up --provider=digital_ocean --provision で行うことが出来ます。

接続して確認してみます。

$ vagrant ssh
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-24-generic x86_64)

* Documentation:  https://help.ubuntu.com/

System information as of Sat Aug  9 16:55:12 EDT 2014

System load:  0.2               Processes:              76
Usage of /:   8.0% of 19.56GB   Users logged in:        0
Memory usage: 13%               IP address for eth0:    178.62.17.227
Swap usage:   0%                IP address for docker0: 172.17.42.1

Graph this data and manage this system at:
  https://landscape.canonical.com/

Last login: Tue Aug  5 15:18:31 2014 from 162.243.14.86
root@docker01:~# docker version
Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070

Dockerが動いている状態になっていますね!

まとめ

というわけでわずか1分で環境が用意することが出来ました。 実際に利用してみると便利さがわかります。開発環境で使う分には十分ですね。というかローカルの環境でVirtualBoxで起動する時間以下でネット上にサーバが構築されるとか結構感動です。

プライベートレポジトリを併用して使えば必要なときに使うという使い方が出来て非常に便利です。Vagrant経由で実行することでAnsibleなどを併用すればその辺りもある程度自動化出来ますね。