Skip to content

コンテナとは

**「あわわわ、みんな、とても簡単だよ。再教育が必要なのでは?...最近はボールベアリングばかりだからね。"- 1985年の映画「フレッチ」

悲しいことに、最近はボールベアリングばかりではありません。それはコンテナのことです。コンテナについて聞いたことはあるけれど、それが何なのかよくわからないという方は、正しい場所に来たと言えます。このブログ記事では、次のような質問を取り上げています。

  • なぜコンテナを気にする必要があるのか?
  • コンテナとは何ですか?
  • コンテナはマイクロサービスと同じですか?
  • マイクロサービスアプリケーションの例を教えてください。
  • Dockerコンテナとは何ですか?
  • コンテナ・オーケストレーションとKubernetesとは何ですか?
  • コンテナと仮想マシンイメージの違いは何ですか?
  • コンテナを使い始めるにはどうすればいいですか?
  • IBM Cloud Paksはどのように役立ちますか?
  • コンテナはどこで実行できますか?
  • Red Hat OpenShift on IBM Cloudとは何ですか?

Why should I care about containers?

組織全体で、コンテナの導入には様々な種類があります。多くの人がコンテナについて学んでいるところです。また、さらに進んでいる企業もあります。もしあなたがコンテナ化を検討しているのであれば、実際にビジネスの成果が得られるこの楽しみに参加する時です。

  • 市場投入までの時間を短縮: 新しいアプリケーションやサービスは、企業の競争力を維持するものです。新しいアプリケーションやサービスは、企業の競争力の源泉です。
  • デプロイメント速度: 開発からデプロイメントまでを迅速に行うことができます。コンテナ化は、DevOpsチームの障壁を取り除き、デプロイの時間と頻度を加速します。
  • ITインフラストラクチャの削減: アプリケーションのワークロード密度を高め、サーバーの計算能力を有効に活用し、ソフトウェアのライセンスコストを削減します。
  • IT運用の効率化:多様なアプリケーションやインフラの管理を単一の運用モデルに集約し、合理化・自動化することで運用効率を向上させます。
  • Gain freedom of choice: パブリッククラウド、プライベートクラウドを問わず、アプリケーションをパッケージ化して出荷、実行することができます。

コンテナとは?

コンテナを理解するのに最適な例えは、出荷用のコンテナです。そのため、コンテナに関する記事やブログの大半は、輸送用コンテナの写真を掲載しています。皆さんも、あの大きな鉄製の輸送用コンテナを見たことがあると思います。(海運業界では、コンテナのサイズを統一しました。コンテナの大きさを統一することで、船、列車、トラックと、荷物を降ろすことなく移動できるようになったのです。コンテナの中身は関係ない。

船のコンテナと同じように、ソフトウェアのコンテナもソフトウェアのパッケージを規格化したものです。ソフトウェアの実行に必要なものはすべてコンテナの中に入っています。ソフトウェアのコード、ランタイム、システムツール、システムライブラリ、設定などが一つのコンテナの中に入っています。

コンテナはマイクロサービスと同じものですか?

コンテナの世界に飛び込むと、マイクロサービスの話を避けて通ることはできません。(マイクロサービスとは、暗闇で踏む小さな車のことではありません。あれはマイクロマシンです。私たちは自分自身と付き合っているのかもしれませんね)マイクロサービスはアーキテクチャのスタイルのひとつです。マイクロサービスアーキテクチャは、特定のビジネス機能を提供する疎結合のサービスの集合体として、アプリケーションを構成します。それを実現するのがコンテナです。

マイクロサービス・アプリケーションの例は?

10 年以上前、Netflixはコンテナを使い始めた最初の企業の1つでした。彼らは、動画サービス全体を動かすアプリケーションを、マイクロサービス・アーキテクチャを使って書き換えました。2017年、Netflixは、同社のサービスを構成する多くの機能のそれぞれを制御するために、約700のマイクロサービスを採用していると推定しています。いくつかの例を見てみましょう(700個すべてではありません)。

    1. ビデオ選択。1. ビデオ選択:コンテナ内のマイクロサービスが、携帯電話、タブレット、コンピュータ、テレビに、再生するビデオファイルを、インターネットの速度に応じたビデオ品質で提供します。
  1. 視聴履歴: 1つのマイクロサービスが、あなたがどの番組を見たかを記憶します。
  2. 番組推薦: あるマイクロサービスは、あなたの視聴履歴を見て、アナリティクスを使って映画を推薦します。
  3. メインメニュー: 1つのマイクロサービスが、メインメニューに表示されるこれらの映画の名前と画像を提供します。
  4. 課金。別のマイクロサービスが、あなたのクレジットカードから月額料金を引き落とします。

Netflixの会員は、1億4,000万時間以上のコンテンツを毎日ストリーミングしており、190カ国に1億8,280万人の加入者がいます。この規模になると、数秒のうちにエンターテインメントを提供することで、そのアプリケーションが試されることになります。そう、コンテナは小さな会社にも大きな会社にも使えるのです。

Dockerコンテナとは?

さて、コンテナとは何かを理解したところで、いよいよDockerを紹介します。(Dockers製の快適なCasual Fridayパンツのことではありません)。Dockerは、コンテナの作成と実行に使用できる、オープンソースのコンテナ化プラットフォームの名前です。Dockerは新しいものではなく、実際には2008年から存在しています。他にもコンテナの選択肢はありますが、多くの人はDockerがコンテナ戦争に勝利したと考えています。(数年前のBlu-ray対HD-DVDの規格争いを覚えている方もいるかもしれませんが、Blu-rayが勝利しました。この例えで言えば、DockerはBlu-rayのようなものです)。Dockerを使えば、パブリッククラウドやプライベートクラウド上で、アプリケーションをパッケージ化して出荷し、実行することができます。どこでもアプリケーションを実行できることで、ベンダーロックインを回避し、いつでも新しい環境に移行することができます。

コンテナオーケストレーションとKubernetesとは?

もうひとつ、紹介すべき重要なコンセプトがあります。それはオーケストレーションです。1つのコンテナがあれば、管理は簡単です。しかし、より多くのコンテナを作成すると、それらを管理することが非常に重要になってきます。そうしないと、混沌とした状態に陥る可能性があります。(Kubernetesは、そのような混乱からあなたを救ってくれます。(面白いことに、Kubernetesはギリシャ語で舵取りや水先案内人を意味します。)Kubernetesは、あなたの空想的なコンテナ化されたアプリケーションを操縦したり、編成したりするオープンソースのシステムです。Kubernetesは、コンテナを動かしてコントロールするクレーンのようなものだと考えてください。

先に述べたように、Kubernetesはコンテナをオーケストレーションします。しかし、これは実際には何を意味するのでしょうか。Kubernetesは、アプリケーションをスケールアップまたはスケールダウンします。Kubernetesは、アプリケーションの変更やアップグレードをロールアウトします。何か問題が発生した場合、Kubernetesは変更を元に戻し、失敗したコンテナを再起動し、ノードが死んだらコンテナを交換し、ヘルスチェックに反応しないコンテナを殺します。この管理により、可用性を犠牲にすることなくリソースを節約し、自動ロードバランシングを実現します。

コンテナと仮想マシンイメージの違いは何ですか?

その名が示すように、仮想マシン(VM)はコンピュータシステムをエミュレートするソフトウェアです。VMを使えば、1台のコンピュータ上で複数のマシンに見えるものを動かすことができます。異なる種類のハードウェアやオペレーティング・システム上でソフトウェアを実行する必要がある場合、VMは追加のハードウェアを使用せずにそのオプションを提供します。

コンテナとVMの主な違いは、VMではオペレーションシステムを含む仮想環境を構築し、そこでさまざまな種類のソフトウェアを実行することができます。一方、コンテナでは、ソフトウェアを環境やOSから分離し、ほぼどこでも実行できるようにします。

コンテナを使い始めるには

まずは、1つのコンテナから始めるのが一番です。アプリケーションのコンテナ化には多くのメリットがありますが、問題はどこから始めるかです。というか、どうやって始めればいいのでしょうか?ここでは3つの方法を紹介します。

    1. 移行と拡張: Lift-and-shift は、オンプレミスのアプリケーションをコンテナ化して(通常はデータセンターから)持ち上げ、次にどこか別の場所(通常はパブリッククラウドやプライベートクラウド)に移すプロセスです。なお、リフト&シフトは、アプリケーションをリファクタリングしたり、分解したりするものではありません。アプリケーションのすべて、またはほとんどを1つのコンテナに入れることです。 2.アプリケーション・モダナイゼーション:より積極的なアプローチは、モノリシックなアプリケーションをマイクロサービス・コンテナにリファクタリングすることです。この方法は、ある開発手法から別の開発手法に移行することです。 3.3. 新規開発: 組織によっては、すべての新規開発をコンテナを使用して開始することを選択します。

IBM Cloud Paksはどのように役立つか

コンテナやKubernetesの他にも、企業は本番環境のトポロジーをオーケストレーションしたり、アプリケーションの管理、セキュリティ、ガバナンスを提供する必要があります。IBM Cloud Paksの登場です。

IBM Cloud Paks は、エンタープライズ対応のコンテナ化されたソフトウェア・ソリューションで、コア・ビジネス・アプリケーションをあらゆるクラウドに移行するための、オープンで高速かつ安全な方法を提供します。各IBM Cloud Pakは、Red Hat OpenShift on IBM CloudとRed Hat Enterprise Linux上で動作し、共通の統合レイヤーの上に、コンテナ化されたIBMミドルウェアと開発・管理用の共通ソフトウェアサービスが含まれています。IBM Cloud Paks explainedのビデオでは、アーキテクチャの概要がよくわかります。

アプリケーション、データ、統合、自動化、マルチクラウド管理、セキュリティのための利用可能なクラウドパックのソリューションについては、こちらをご覧ください。

自分のコンテナはどこで実行できますか?

覚えておいてほしいのは、DockerとIBM Cloud Paksによって、あらゆるパブリック・クラウドやプライベート・クラウド上でアプリケーションをパッケージ化し、出荷し、実行することができるということです。今日、ほとんどの組織は1つのクラウドベンダーにロックインしていません。このアプローチは良い習慣です。85%の企業がすでにマルチクラウド環境で運用しており、その環境の大部分は複数のハイブリッドクラウドで構成されています。

クラウド環境には、3つの異なるタイプがあります。

  1. パブリック・クラウド:パブリック・クラウドはマルチテナント環境ですが、完全に管理されており、使用量に応じた価格を提供します。IBM Cloud、AWS、Azureはパブリック・クラウドです。IBM Cloud Paksをこれらのクラウドのいずれかで実行することができます。 2.2. 専用クラウド:専用クラウドは、パブリック・クラウドの利点を専用のインフラストラクチャで提供します。専用クラウドは、多くの業界規制要件を満たしています。また、他の人と計算機能を共有することはありません。 3.3. プライベートクラウド: プライベートクラウドは、クラウドコンピューティングの利点を提供しますが、ファイアウォールの内側にあります。Red Hat OpenShift on IBM Cloudは、スケーラブルで信頼性の高いIBM Cloudプラットフォーム上で、完全に管理されたOpenShiftクラスターを提供する包括的なサービスです。お客様は鍵を取得しますが、安全なIBMデータセンターで実行されます。

Red Hat OpenShift on IBM Cloudとは?

コンテナ、Docker、Cloud Paks、そしてKubernetes。すべてにイエス?Red Hat OpenShift on IBM Cloudは、これらすべてをあなたのためにまとめてくれるので、あなたはアプリケーションの開発と管理に集中することができます。Guided tour of Red Hat OpenShift on IBM Cloudのビデオをチェックして、このサービスがどのようにOpenShiftクラスターを管理してくれるのかを学んでください。このサービスは、The Weather Companyで毎日250億件のオンデマンド予測を管理しているのと同じKubernetesサービスに直接統合されています。これは多いですね。

OpenShiftのネイティブな体験ができるダッシュボード、マルチゾーンクラスターによる継続的な可用性、ワークロードやデータをより安全に移動させるなどの機能の詳細をご覧ください。また、このビデオでは、KubernetesとOpenShiftの違いをご紹介しています。

まとめ

コンテナは未来のためのビルディングブロックです。新しい「光り輝く物体」というよりは、ここに留まるものです。アプリケーションの迅速な提供、開発からデプロイまでの時間短縮、インフラとソフトウェアのコスト削減など、コンテナは小規模な企業から大規模な企業まで、実際のビジネス成果をもたらします。