こちらの記事は、2016年8月にさくらのナレッジで公開された記事を再編集したものとなります。なお、記事中のArukasは2020年1月31日をもちまして、サービス提供を終了いたしました。文●山田修司
こんにちは! Arukas 担当の山田です!
今回は、Dockerコンテナホスティングサービス『Arukas(β版)』のご紹介です!
はじめに
これまでのサーバの初期セットアップ作業というと、Ansible や Chef のような構成管理ツールを使用するであるとか、代々受け継がれる秘伝のシェルスクリプトを適用するであるとか、誰かがwikiに書いたメモをひたすらコピペしてコマンドを投入していくようなセットアップ作業が一般的でした。
シェルスクリプトはちょっとしたセットアップ作業には向いてます。
しかし、サーバの種類やOSが増えるとともにコードが増加しやすく、コードに一文字の誤りがあるだけでも実行途中でセットアップが中断してしまいます。スクリプトが中断された場合には該当箇所を修正してからスクリプトを再実行。運が悪ければ、OSの再インストール作業からやり直しです。セットアップが必要なサーバが一台だけならまだしも、数台~数十台のセットアップ作業でそのようなトラブルに見舞われると一日潰れてしまいます。
Ansible や Chef のようなシステム構成管理ツールでは冪等性が概ね確保されているので、OSの再インストールからやり直しになるようなことは滅多にありません。しかし、それらのツールを使用するにあたってはツールの学習コストやコードの保守コストが無視できない程度に発生します。
あるいは、1日で100台単位のサーバをセットアップをしなければならない場合であれば、現場でOSインストール作業してしまうとネットワーク回線が輻輳して進捗が大幅に遅延してしまいますので、秋葉原まで出向いて玄○志向などのディスク複製機(デュプリケーター)を可能な限り調達してきてデータセンター内に持ち込んでセットアップ済みサーバの起動ディスクをひたすら複製してOS起動してIPアドレス設定だけ書き換えていく・・・という経験をされたような方もいらっしゃるかもしれません。
Docker とは
Docker は、米Docker,Inc. が開発したオープンソースソフトウェアです。
紙面に限りがあるので、誤解を恐れずにざっくり説明してしまうと、「好きなアプリケーション環境をダウンロードしたり、自分好みにカスタマイズ編集したりして、お気に入りのアプリケーション環境としてDocker対応マシン上で起動できる。」という、新しいタイプのツールです。
Docker には、今や世界最大のアプリケーションカタログとも言える Docker Hub の存在が欠かせません。Docker Hub には WordPress や Ghost のようなメジャーなものから Nmap や Serverspec のようなインフラエンジニア向けのツールまで、およそ46万種類を超えるアプリケーション環境が Docker イメージとして保管されています。
Docker Hub からお気に入りのDockerイメージをダウンロードして、Dockerがインストールされているマシン上で起動することで、WordPress や Ghost 環境などをこれまでよりもずっと簡単に立ち上げることができようになります。
Dockerfile と呼ばれる定義ファイルに Docker イメージ化したいアプリケーション環境の構成情報を定義することで、お気に入りのDockerイメージを作成することもできます。Dockerfile には OS や 作成者名、環境変数、セットアップコマンドなどを定義できます。
Docker は Windows や Mac にもインストール可能な基本無償のオープンソース・ソフトウェアです。
Linux サーバだけではなく、ノートPC上でも Docker を動かすことができます。
Docker を開発用途に利用するのは比較的容易です。
- 基本的な部分はとてもシンプルで学習コストが低い。
- Dockerfile は Git ライクなバージョン管理やワークフローが可能。
- 従来的な開発ワークフローとの親和性が高い。
- 手元にあるマシン上で迅速にアプリケーション環境の動作確認がしやすい。
- アプリケーション環境構成の自由度が高い。
- コンテナと既存のミドルウェアとの親和性が次第に高まりつつある。
一方で、本番環境では既存のインフラからの移行を難しくする以下のような特徴があります。
- Docker と Dockerコンテナ の運用が必要になってしまう。
- 既存のインフラ(ネットワークやストレージ、その他アプライアンス製品)との親和性が低い。
- コンテナ内部にはデータを永続的に保管することはできない。
このような特徴のため、「Docker は開発環境ではとても便利に使えるけれども、いざ本番環境では使いにくい・・・」というケースが多いです。
Dockerコンテナホスティングについて
Arukas は、Dockerイメージの起動に最適化されたホスティングサービスです。
Arukas は、Docker Hub 上で保管されているアプリケーション環境をグローバルなインターネット環境上に展開することを支援します。Arukas 上で公開されたアプリケーションには世界中からアクセスすることができます。
Arukas のインフラは、国産IaaSクラウドとして数千社の運用実績を持つさくらのクラウド上に構築されています。国内最大級のバックボーンを誇るネットワーク回線に収容されているため、驚異的なスピードで DockerHub 上にある Docker イメージを取得してインフラ上に展開することが可能です。
インスタンス数を指定するだけで必要なインスタンスを確保・展開することが可能です。
素早く、欲しいインスタンスを欲しい分だけ作ることができます。一時的に複数台の同一構成インスタンスが欲しい場合などに便利です。
最新版の Docker イメージに入れ替えたいときには、対象のDockerコンテナのバージョン情報を更新するだけです。新バージョンのコンテナのサービスが起動してから、稼働中の旧バージョンのコンテナを自動停止します。これは Blue-Green Deployment とも呼ばれる機能で、無停止に近いアップデート作業を実現することができます。
また、Arukas は常に安定的でかつ最新に近い Docker 実行環境を提供します。
Docker バージョンの更新、あるいは複数コンテナの管理といったユーザーの負担を軽減します。
まとめ
世の中は実に多種多様なアプリケーションやクラウドサービスを組み合わせながらサービス開発することが当たり前の時代になってきました。
Docker は様々なアプリケーション環境を簡単なコードで定義し、再利用可能なテクノロジーの一つです。
アプリケーション環境をカスタマイズ可能な必要最小限のコードで定義し、インターネットに接続されている Docker 対応マシン上であれば Docker イメージ化されたアプリケーション環境を再利用可能です。クラウドストレージと接続する構成設定や環境変数を付与することでデータの永続化も実現可能です。
安定性や品質面では依然として既存のテクノロジーやサービスには惜しくも及びませんが、Docker 本体や Docker 周辺のツールの開発、あるいはコミュニティは極めて急速なスピードで拡大を続けており、そう遠くもないうちに多くの本番環境上でも安全に実用可能な品質水準に達するテクノロジーに成長する可能性があります。
コンテナ技術を最大限に活用することでサーバコストを抑制することは可能ですが、コンテナ技術や Docker は運用の負担を削減することを目的としたテクノロジーではありません。従来のテクノロジーを用いるケースと同様に、運用までを見据えたサービス設計が重要になります。
サーバコストの削減に成功したとしても、運用フェーズにおける負担が増加してしまっては Docker を本番環境で導入する価値は薄れてしまいます。Docker が得意とする分野をしっかりと理解した上で、使いどころは十分に検討する必要があります。
Arukas をはじめとする様々な Docker コンテナホスティングサービスは、ユーザーが抱えることになる様々な運用負担を軽減することを目的とするサービスです。とはいえ、緊急で今すぐにDockerコンテナホスティングが欲しい!という人はそうそうなかなかいないと思いますので、この場では「Docker コンテナホスティングとはこういうものなんだ」という感触を覚えてもらうだけでも後になってから役立つと思います。
あとがき
この業界に入ってきた人であれば、自分で作成したwebページを公開するために無料のレンタルサーバを契約してあまり意味も理解しないまま言われるがまま書かれているがままにFTPを使ってファイルアップロードしてなんとかかんとかして自分のwebページを公開したような経験ってあると思うんです。
最近であれば FTP ではなく git に置き換わりはじめていて、公開場所もレンタルサーバから github や S3 、あるいは VPS へと多様な形への変化が起きています。これらのツールやサービスというのはどれもシンプルでリーズナブルな価格帯で使いやすく、長年使えて親しみやすい魅力的なサービスプロダクトです。そして、使いこなすことができれば予想以上の規模までスケールすることが可能です。
Arukas は Docker の基本的な使い方さえわかれば、誰でも自分の web ページやサービスを公開できるようなサービス公開基盤として、予想以上の規模までスケールできるサービスを目指して前に進めていくつもりです。今後とも Arukas をどうか何卒よろしくお願いいたします。
おまけ:Arukasのチュートリアル
Arukas を体験してみたい!という方のために、Arukas のハンズオン資料を Qiita で公開しております。
チュートリアル形式で進められるので、どうぞご覧くださいっ。
関連記事:
さくらの独立部隊? DockerコンテナホスティングサービスArukas(アルカス)の開発現場『さくらガレージ』に潜入!