[和訳]Docker 1.11: 初めてcontainerd上に構築されたOCI準拠ランタイム #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Docker 1.11: The first OCI-compliant runtime, built on containerd (2016/4/13) の和訳です。
このたび、runCおよびcontainerd上に構築された最初のリリースであるDocker Engine 1.11をご紹介できる事をうれしく思います。
これは初めてのOCI準拠のランタイムであり、昨年の6月にLinuxファウンデーションに対して業界標準のコンテナフォーマットとランタイムを寄付して以来の進展を示すものです。
昨年は、Docker社はより多くのユーザーに利用して頂けるようOCIを支援してきました。
runCをコントロールするcontainerdを発表したのは2015年12月のことでした。
これは、Dockerを再利用可能な小さい部品化を行う取り組みの一部でした。このリリースでは、Docker Engineがcontainerd上に構築されているため、それはすなわち、Dockerを利用するすべての人がOCIを使用していることになるのです。 私たちは40以上のメンバーから構成されるOCIによって、コンテナ技術の標準化を進める事が出来たことを誇りに思います
それに加えて、この非常に刺激的な技術的事実は、パーティで皆さんの友人を驚かせることでしょう。これがどんな違いをあなたにもたらすか?一言での答えはまだありません。
とは言え、この事実が皆さんにとって興味あることであることを説明したいと思います。
これは、エンジンに対して技術的に行った機能変更の無い最大の書き直しであり、Ver1.11の最大のプライオリティは、コマンドラインやAPIを変更することなく統合を正しく行えることにありました。しかし、そのためにはユーザーが求めている改善に必要な技術的基礎固め作業が必要でした。
安定性とパフォーマンス
containerdとの統合により、Docker自体のコードが非常にきれいになり、多くの歴史的なバグも修正されています。 一般的に言って、Dockerを独立したツールに分けることは、これまでより保守寄りとなったことを意味し、究極的にはソフトウェアの品質が良くなるということです。
パフォーマンスの面では、バージョン1.11のプロセス間通信が増加したため、それによって遅くならないことに最大の注意を払いました。 今回のバージョンでは、同時にコンテナを生成することが過去のバージョンと比較して早くなっており、また、正確性を優先したにもかかわらず将来的にはパフォーマンスの向上も期待できるようになりました。
コンテナ実行のためのエコシステム作り
runCは初めてのOpen Containers Runtime specification準拠のもので、Docker Engineにバンドルされている標準のエグゼキュータです。 オープンな仕様のおかげで、将来的なエンジンのバージョンは異なったエグゼキュータを指定することができ、これによりDockerに変更を加えることなくバックエンドをエコシステムから選択して実行する事が可能となりました。 この部品を分離することにより、エコシステムのパートナーは独自のエグゼキュータを構築することができ、エンジンのリリーススケジュールやコードに反映されるのを待つことなくユーザーに提供することが可能となります
これが何を意味するものなのか?これにより、ランタイムがプラガブルとなり、選択が可能となります。 Dockerの基本理念は取り替え可能な内蔵電池であり、Docker EngineはrunCを標準に実行しますが、使用するプラットフォームやセキュリティ、パフォーマンス要件によって異なったコンテナエグゼキュータを選択することが可能です。 コンテナをエンジンから独立させて動かすことは新しい可能性を広げました。 例として、1.11はコンテナを再起動すること無くエンジンを再起動できるようになり、コンテナの可用性を改善するという大きなステップを踏み出しました。 これはおそらく、Dockerのユーザーが最も望んでいた機能の一つだと思います。 実際、この新しいアーキテクチャにより、コンテナを起動したままcontainerdを再起動する事も可能となりました。
このブログでcontainerdに関するMichael Crosbyの記事をさらに読む
待ってください、まだ続きがあります!
この大きなアーキテクチャの変更に加えていつものように、Engine、Compose、Swarm、MachineとRegistryに多くの機能を追加しました。
Engine 1.11
DNSラウンドロビンロードバランシング。Dockerネットワーク上でコンテナ間ロードバランシングが可能となりました。 もし、複数のコンテナに同じエイリアスを与えた場合、DockerのサービスディスカバリはラウンドロビンDNSのためにそのすべてのコンテナのアドレスを返します。
VLANのサポート(実験的サポート): Dockerネットワークの実験チャネルにVLANのサポートが追加され、既存ネットワークインフラとの統合をしやすくなりました。
IPv6サービスディスカバリ:EngineのDNSベースのサービスディスカバリシステムがAAAAレコードを返すようになりました。
Yubikeyハードウェアイメージ署名:数ヶ月前、Docker実験的サポートチャネルにてYubikeyハードウェアに対するイメージ署名機能を追加しました。 これは安定版リリースチャネルで既に入手可能となっています。どのように動作するのか詳しくはこちらのブログへ。
ネットワークとボリュームのラベル:これまでコンテナとイメージに可能であったのと同じようにネットワークとボリュームに任意のキー/値を負荷することが可能となりました。
デバイスマッパーストレージによるディスクスペース減少時のより良い取扱い:dm.min_free_spaceオプション追加によりディスク容量の減少時により丁寧なデバイスマッパーフェールが起きるようになりました。
docker inspectでの一貫性のあるステータスフィールド:これは小さなことですが、Docker APIを使う人にとっては便利なものです。docker inspectは一つの一貫した値を持ち、その値は実行中、停止中、再起動中、その他のステータスを定義します。詳しくはこちらからリクエストして下さい。
Compose 1.7
--build option for docker-compose up:これはdocker-compose build とdocker-compose upの短縮形です。 Composeはビルドが遅い場合は毎回ビルドを行わないかもしれません。、ですが、もしより早いビルド環境を手に入れた場合には、このオプションにより毎回ビルドを行い環境を常に最新に保ちます。
docker-compose execコマンド:docker execコマンドのミラー化
Swarm 1.2
コンテナの再スケジューリングの正式サポート:Swarmの前バージョンで、ノードが死んだ場合、コンテナの再スケジュールをサポートしました。 この機能が安定していることが確認されましたので商用環境に使用可能となりました。
コンテナがスケジュールできなかった場合のより分かりやすいエラー:例えば、制限によって失敗した場合、その制限が画面に表示されるようになり、何が原因なのか簡単に分かるようになりました。
Machine 0.7
このバージョンのMachineでは、マイクロソフトAzureのドライバが新しいAzureのAPIを使うようになり、より簡単に認証ができるようになりました。詳細はAzureのブログをご覧下さい。また、このリリースではこれ以外にも多くの改善点があります。- 詳細のすべてはリリースノートをご覧下さい。
Registry 2.4
ガベージコレクション:ユーザーによって削除されたイメージのデータをシステム管理者がクリーンアップするツールを追加しました。 詳細はガベージコレクタドキュメントをご覧下さい
より早く安定したS3ドライバ:S3ストレージドライバがより速くなり、安定性を増しAmazon S3 SDK上に実装されました。
詳細のすべてはリリースノートをご覧下さい。
Docker1.11のダウンロードと試用
これら開発中のソフトウェアを試すもっとも簡単な方法は、Docker Toolboxをダウンロードすることです。 その他のプラットフォームについては、インストレーションインストラクションをご覧ください。
これらすべてのものは、Docker for MacとWindowsでも入手可能です。これらはDockerを開発で使う新しい方法であり、現在プライベートベータ版です。いち早く入手するには、サインアップをお願いします。
--
Dockerに関してさらに学ぶには
・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.10リリースノートを読んでみましょう。
・Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
・DockerCon 2016に登録してみましょう。
・DockerCon EU 2015のビデオを見てみましょう。
・Dockerコミュニティへの貢献を始めましょう。