Operations Lab.

Archive for the ‘Containers’ Category

Container SIG Meet-up 2016 Fall に参加しました

leave a comment »

10/7 (金)に Container SIG (Special Interest Group)の初イベントがありました。コンテナはインフラ観点でも Windows 観点でも Hot な Topic なので、一般の参加者として参加してきました。

会場は IIJ のセミナールームで、参加登録者(キャンセルした人を除く)はなんと 172 名と、初回のイベントにしてはかなり注目されているように感じました。

全体を通して

私はコンテナにそこまで詳しくないので、歴史を振り返るセッションから応用セッションまで楽しく聴講させていただきました。参加者の属性としては、コンテナに触ったことがある方がほとんどだけど、本番環境で運用している方は数名、という感じだった気がします。

セッション1:Linuxのコンテナ技術の変遷

IIJ 花高さんによる、Linuxのコンテナ技術の変遷について。コンテナ初心者かつ、普段最新情報を追いかけていない人にとっては、とても勉強になりました。なんとなく断片的に知っている内容も多いですが、改めて情報を整理できました。

セッション2:Dockerは2016年の秋現在、どのような状況なのか

さくらインターネットの前佛さん(@zembutsu)による、直近のコンテナ(主に Docker 周り)関連情報のまとめセッション。Docker はアップデートが早く、最新情報を追いかけるのも大変なので、大変助かります。最近は Docker がカバーする領域も広がってきていて、カオスですしね。

セッションスライドは SlideShare で、既に公開されています

ところで、Docker 日本語訳(Docker ドキュメント日本語化プロジェクト)って前佛さんの趣味個人プロジェクトだったのですね。

セッション3:Ansible Container – Container Automation with Ansible

Redhat 橋本さんによる Ansible を使ったコンテナの Automation に関するセッション。コンテナのデプロイを Ansible からコントロールするなど、Ansible ユーザー視点では順当な内容に思えました。本番環境でまじめにコンテナを運用管理するのであればアリかもしれません。既に Ansible で構成管理(Infrastructure as Code / Configuration as Code)を行っているところは多そうですし。

個人的には、Docker は Docker でコントロールする領域が増えてきているので、Ansible との連携がどの程度カバーしていけるか(追従していけるか)や、どのようにすみ分けていくか(ベストプラクティス的な意味でも)が気になります。

セッション4:Google Container Engineで五目並べアプリのAPIサーバーを作る

Google の中井さん(@enakai00)による、Google Container Engine を使用して五目並べのアプリケーションコンテナを起動し、サービスを提供する(API 経由でクライアントからのリクエストに応答する)というライブデモセッション。

やはり、ライブで構成(デプロイ、設定)するのはセッションとしてのインパクトが大きいですね。コンテナをステートレスにしておき、サービスをオンラインのまま、構成ファイルを書き換えてアプリをバージョンアップする(実際にはブルーグリーンデプロイメントによって本番環境がバックグラウンドで入れ替わっている)部分なども、普段からクラウドアプリケーションのバージョンアップを行っている人には当たり前ですが、レガシーアプリケーションが多い人には面白く映ったのではないかと思います。

セッションの内容は、Web で公開されています。また、デモで使用されていたコードも GitHub で公開いただいているようです。

セッション5:DDoS vs. DockerコンテナホスティングArukas

さくらインターネットの山田さん(現 Container SIG 会長)による、Arukas に DDoS を撃ち込まれた際のお話。Arukas はさくらインターネットさんが提供している Container ホスティングサービス(現在 Beta)ですが、オープンに(かつ日本で)利用可能な Docker のホスティングサービスはかなり珍しいので、お話を伺えるのは貴重な機会でした。

Arukas のユーザは 15000 人程度ということで、日本はそのうち 3000 ユーザ程度のようです。さくらさんのサービスは海外のユーザからもかなり利用されているんですね。Arukas が Beta で今のところは無償利用できる、というのと世界的にもコンテナホスティングはそれほど多くない、というのも要因としてあるとは思いますが。

DDoS のお話については、割と想像していた通りの内容でした。色々言ってしまって大丈夫なのか、心配になりました。まる。

アプリケーションエンジニアの方々におきましては、ぜひともコンテナのベースセキュリティ設定を見直していただきたく思います。インフラエンジニアは、もっと(今までインフラレイヤーの方々が OS などで培ってきた)情報を発信していかないといけないな、とも思っています。

次回

次回は半年後の予定(もしかしたらもう少し早いタイミングかも)ということなので、自分も Container への理解を深めつつ次回以降も参加していきたいと思いました。

Written by kazu

2016/10/10 at 02:15

Docker はコンテナそのものではない(はず…)

leave a comment »

最近、あまりにも Docker という言葉が曖昧なコンテキストで使われているので、少しまとめてみます。

おことわり

  • 旧来の Docker について記載します。(Docker ファミリーはどんどん進化(領域拡大)しているので、将来的にはこのポストの内容が誤りになるかもしれません。)
  • 2016 年 9 月時点の情報をベースにしています。
  • 分かりやすさを優先するため、厳密には正しくない記載(割り切った記載)が含まれます。
  • 誤りがあれば、ぜひご指摘ください。(特に有識者の方)

初めに

Docker コンテナそのものを実現する(実行する)仕組み(機能)

乱暴に言うと、Docker はコンテナそのものではありません。仮想マシンに例えて言うなら、Windows Hyper-V における Hyper-V (ハイパーバイザ)そのものではありません。

Docker (または Docker コンテナとは)

ざっくり言うと、以下の 3 つ(のどれか)です。

  1. コンテナイメージのフォーマット(の一種)
  2. コンテナを管理・制御するためのサービスおよびツール群(dockerd および docker cli)
  3. コンテナイメージを管理、再利用するためのレポジトリ (Docker Hub, Docker Registry)

これらを含めて Docker エコシステムが形成されています。

結局 Docker は何をしてくれているのか

コンテナそのものは、(Linux であれば)Linux Containers (各種ネームスペースや cgroups などの、Linux kernel の機能)により実現されています。Windows Server 2016 の場合は、「Containers」の機能(Windows Containers / Hyper-V Containers)によって実現されています。

Docker はコンテナを実現する仕組みをうまくコントロールし、管理を行うためのサービスやユーザーインタフェースを提供してくれています。

乱暴な言い方をすると、Hyper-V の世界でいうところの、System Center Virtual Machine Manager (SCVMM) や、Hyper-V Manager、Virtual Machine Management Services (vmms)のようなものを提供してくれています。

参考資料

Written by kazu

2016/09/17 at 15:43

カテゴリー: Containers, Linux, Windows Server

Tagged with ,

Windows Server 2016 TP5 をコンテナーホストとしてセットアップ

leave a comment »

Windows Server 2016 TP5 ではコンテナーの役割が追加されています。機能をインストールするとコンテナーが利用できるようになりますが、実際にコンテナーの操作を行うためには、別途 docker のインストールが必要となります。

Docker のインストール

必要な手順は、以下の 3 つです。

  1. Docker 公式サイトから Windows 向けの docker をダウンロードして展開
  2. 環境変数 Path に、展開したパス(=インストールパス)を追加
  3. dockerd をサービスとして登録

インストール・スクリプト

上記の流れをスクリプトにしただけです。後半は、MSDN のサイトに記載されている First Step を、一部記述しています。(スクリプトの実行時、次に何をすればよいかのコマンドリストが表示されます。)

#Requires -Version 5.1
#Requires -RunAsAdministrator

# For Windows Server 2016 TP5

Write-Output "Docker Host 構成スクリプト"

Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-1.12.0.zip" -OutFile "$env:TEMP\docker-1.12.0.zip" -UseBasicParsing
Expand-Archive -Path "$env:TEMP\docker-1.12.0.zip" -DestinationPath $env:ProgramFiles
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
& $env:ProgramFiles\docker\dockerd.exe --register-service
Start-Service Docker

Write-Output "docker image を取得してください"

$s = @'
docker pull microsoft/windowsservercore
docker images

docker search microsoft
docker pull microsoft/iis:windowsservercore
docker images
docker run -d -p 80:80 microsoft/iis:windowsservercore ping -t localhost
docker ps
'@

Write-Output $s

Written by kazu

2016/05/15 at 16:26