技術ブログ

2017/03/29
Docker最新動向

昨今、開発効率化やDevOpsなどの文脈でDockerが多く取り上げられていますが、Docker自体もバージョンアップを重ねており、日ごとに新しい機能が追加されています。
例えば、Docker 1.13では、Swarmモード(クラスタ構築)の強化やコンテナのスナップショット機能が取り入れられており、これまでより容易に開発・管理できる環境が進みつつあります。
また、エンタープライズ版DockerであるDocker EEも公開され、サポート体制が整備されたことで、様々な企業において一層Dockerの導入が進むと考えられます。

本記事では、Dockerの新バージョンについての情報や関連技術(Docker EEやKubernetesなど)の最新動向を紹介します。


Dockerとは

まずはDockerとは何かについて簡単に解説します。
Dockerとは、アプリケーションをコンテナとしてパッケージ化し、ホストOS上で管理・実行するソフトウェアです。
Dockerには下記のような仕組みがあるため、アプリケーション開発・公開を効率的に行うことができます。

  • ・コードによるコンテナ作成機能
  • ・コンテナのバージョン管理機能
  • ・コンテナイメージを簡単に共有するサービスやソフトウェア(DockerHub, DockerRegistry)

What is a Container | Docker


Dockerの利用用途(Docker社の調査結果)

2016年のDocker社の調査によると、Dockerは開発効率化を目的とした利用が最も多くなっています。
また、環境管理が容易という点もDockerを利用するポイントとなっています。

【目的】

  • ・開発の機敏性を高めるため 65%
  • ・アプリ環境の管理のため 48%
  • ・アプリのポータビリティ確保のため 41%

また、Dockerの採用状況・計画を見ると、開発環境のみならず本番環境においてもDockerを採用したい動向が伺えます。

【採用状況】

  • ・開発環境で採用している 90%
  • ・本番環境で採用している 58%

【採用計画】

  • ・開発環境で採用したい 90%
  • ・本番環境で採用したい 80%

The Evolution of the Modern Software Supply Chain - The Docker Survey, 2016 | Docker


Docker 1.13

Dockerの最新安定バージョンであるv1.13.1が2017年2月8日にリリースされました。
ここでは、v1.13系で追加された主な機能について紹介します。

・Swarmモードの機能強化
Swarmモードとは、Dockerホスト群をクラスタ化し、容易に管理できる機能です。Swarmモード自体はDocker 1.12で追加(Docker Swarmを統合)された機能ですが、 Docker 1.13ではこのswarmモードにおいてcompose-file(複数のコンテナの構成を管理しやすくするDocker Composeの構成ファイル)を容易に取り扱える機能が追加されています。

・Checkpoint, Restore機能(実験的機能)
動作中コンテナを一時停止・再開できる機能が実験的な機能として追加されています。この機能により、動作中コンテナのスナップショットを取ることができるようになります。

その他の機能に関しては、Dockerのリリースノート、及び公式ブログのDocker 1.13紹介記事をご覧ください。


Docker 17.03 ce

Docker 1.13の次バージョンはDocker 17.03 ceとなります。
Dockerのリリースサイクルの変更に伴い、このバージョンよりバージョニング方式がYY.MM形式に変更されることがリリースノートにてアナウンスされています(以下はリリースノートの引用です)。

IMPORTANT: Starting with this release, Docker is on a monthly release cycle and uses a new YY.MM versioning scheme to reflect this. Two channels are available: monthly and quarterly. Any given monthly release will only receive security and bugfixes until the next monthly release is available. Quarterly releases receive security and bugfixes for 4 months after initial release. This release includes bugfixes for 1.13.1 but there are no major feature additions and the API version stays the same. Upgrading from Docker 1.13.1 to 17.03.0 is expected to be simple and low-risk.

Release v17.03.0-ce-rc1 · docker/docker

また、バージョン末尾の"ce"はコミュニティエディション(Community Edition)を意味しています。
このバージョンは3月のリリースが予定されているため、Docker 17.03となっています。
Docker 17.03では、Docker 1.13のバグ修正に留まり、大きな機能の追加やAPIバージョンの更新は含まれないため、Docker 1.13から容易かつ低リスクにアップグレード可能との旨もアナウンスされています。


Docker EEとDocker CE

2017年3月初旬に有償のDocker EE(Enterprise Edition)と、無償のDocker CE(Community Edition)が公開されました。
これまで公開されていたDockerは無償版であるDocker CEに該当します。
Docker EEでは技術サポートと+αの機能(private registryやDocker Datacenter)が付加されます。

リリース体系もDocker EEとDocker CEでは異なっています。
四半期ごとに安定版バージョンがリリースされるのはDocker EEとDocker CEで同じですが、Docker CEでは更にEdgeと呼ばれるリリースが毎月行われます。
このEdgeは最新機能をいち早く取り込む位置づけのリリース形態となっています。

Announcing Docker Enterprise Edition - Docker Blog

また、Docker EEにはBasic・Standard・Advancedの3エディションが用意されており、それぞれ750、1500、2000ドル/年の料金体系となっています。


Pricing | Docker

Docker EEにおける各エディションの差異ですが、BasicではDockerが認定したOS・クラウドにおけるDocker社のサポートと、Docker認証済みコンテナ・プラグインが提供されます。
StandardではBasicの内容に加えてprivate registryやDocker Datacenterが付加され、AdvancedではStandardの内容に加えてImage Security Scanning(リポジトリに保存されたイメージをスキャンし、脆弱性を発見できるサービス)が付加されます。

 ※ OpenStandiaではDocker EEのサポート提供は行っておりません。


Dockercon16の発表内容

2017年4月にdockercon17が開催されます。
ここでは、前年度のカンファレンスであるdockercon16で発表された内容について簡単に紹介します。

・Docker 1.12
Docker SwarmのDockerへの統合(Swarmモード)などを含む、大規模なアップデートとしてDocker 1.12のリリース告知が行われ、当時Docker 1.12が話題となりました。
Swarmモード以外には、コンテナヘルスチェック機能、コンテナ毎にディスク使用量を制限するディスククォータ機能、プラグイン管理のためのdocker pluginコマンド等が新機能として盛り込まれました。

・Docker for Windows、Docker for Mac
Docker for Windows、Docker for Macでは、WindowsやMac上で仮想環境上のLinuxでDockerを動作させることで、WindowsやMacにおいてもDockerを取り扱えるようになりました。
(従来はDocker Toolboxを利用し、VirtualBox経由でDockerを動作させる必要がありました)

・Docker Store
Docker Storeとは、マルウェアチェックやテストが実施され、署名されたコンテナイメージが提供される場所です。
dockercon16では、beta版としてアナウンスされましたが、現在は本公開されています。(Docker Store


Kubernetes

ここからは、Dockerの周辺技術の動向について紹介します。まずはKubernetesです。
Kubernatesは、Googleが中心で開発しているコンテナ向けオーケストレーションツールであり、以下の特徴を持ちます。

【特徴】

  • ・Docker以外のコンテナにも対応
  • ・複数のコンテナをひとまとめにして扱える(Pod機能)
  • ・マルチクラウド対応(オンプレミスとクラウドの組み合わせも可能)

DockerのオーケストレーションツールのシェアではKubernetesは2位であり、1位はDocker Swarmとなっています。(Docker Swarm Exceeds Kubernetes Performance At Scale

Kubernetesはv1.5系が最新であり、v1.5.0では主な変更として以下の変更が加えられました。

・StatefulSets機能
Podのホスト名やPersistentVolumeとの対応付けを固定化するといったステートフルアプリケーションへの対応機能としてアルファ機能提供されていたPetSetsが、StatefulSetsへ名称が変更されるとともに機能拡張されました。
なお、StatefulSetsはベータ機能としての提供となっています。

・kubefedコマンド
複数環境(クラウド環境内の別リージョンやパブリッククラウドとオンプレミスなど)間のKubernetesクラスタ連携機能であるフェデレーションの設定コマンドであるkubefedコマンドが追加されました。
なお、kubefedコマンドはアルファ機能としての追加となっています。

その他にも、kubernetesのクラスタ構築コマンドのkubeadmの改善や、WindowsServerコンテナへの対応などが行われています。


OpenShift

OpenShiftはRedHat社のPaaS基盤であり、バージョン3からDockerとKubernetesがベースとなっています。
OpenShiftでは、Kubernetesによるオーケストレーションに加え、開発・ビルド・デプロイのための機能及びWebUIが付属しています。

OpenShiftには、大きく以下の3種類が存在します。

  • ・オンプレミスやIaaS用のOpenShift Container Platform(OpenShift Enterpriseから改名)
  • ・パブリッククラウドのOpenShift Online
  • ・OSSのOpenShift Origin

また、OpenShift Container Platformには、開発者個人用の機能であるContainer Localや開発テスト用のContainer Labなどの機能が追加されています。

OpenShift Container Platformの最新バージョンは3.4であり、Kubernetes v1.4への対応のほか、PersistentVolumeの取り扱いの強化や、WebUIの改善としてプロジェクトリストの検索機能の強化などが行われています。


Windowsコンテナ

Docker ToolboxやDocker for Windowsとは異なり、ベースとなるイメージがWindowsとなっているDockerコンテナです。
Windows10とWindowsServer2016で利用可能であり、DockerHubにもMicrosoft公式コンテナを中心にイメージが幾つか公開されています。


まとめ

本記事では、Dockerの最新情報と周辺技術の動向について紹介してきました。
Docker関連は開発が活発なため、今後も更なるアップデートが見込まれます。
また、dockercon17でも新たな機能が公開されるかと思います。
今後もこの技術ブログにて新機能などを紹介する予定ですので、是非ご覧ください。


  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気OpenAM
  • 注目MongoDB
  • OpenIDM
  • Corosync
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • BIND
  • Apache Struts
  • PostgreSQL
  • Pentaho
  • Spring Framework
  • Apache Tomcat
  • Solr
  • Dovecot
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Liferay
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • BIND
  • OpenDJ
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • sendmail
  • Courier-IMAP
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO