昨日までのはこちら
100日後にエンジニアになるキミ - 94日目 - 開発環境 - 仮想化について
100日後にエンジニアになるキミ - 91日目 - 運用 - 監視について
100日後にエンジニアになるキミ - 90日目 - 開発 - CIについて
100日後にエンジニアになるキミ - 88日目 - データ - データ転送について
100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて
100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について
100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて
100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について
100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1
100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて
100日後にエンジニアになるキミ - 53日目 - Git - Gitについて
100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて
100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1
100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1
100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1
本日はにコンテナとDockerについてです。
コンテナについて
仮想化
が何たるかは前回を見ていただければ良いかと思います。
仮想化と言えば一昔前はゲストOS
を用いた仮想化がほとんどでした。
最近ではコンテナ
と呼ばれる技術が出てきています。
参考:https://pfs.nifcloud.com/navi/tech/container_virtualization.htm
従来の仮想化では1台の物理マシン上にはホストOS
が起動し
そのOS上で複数のゲストOS
が稼働していました。
しかし仮想化ソフトを使用した仮想化環境にもデメリットがあります。
複数OSを利用することによる性能劣化や
仮想化ソフトウェアの介在による複雑化などがあります。
そこで注目されているのがコンテナ
です。
コンテナ
はホストOS
上にアプリケーションの起動に必要な
アプリケーション・ライブラリ・設定ファイルなどをひとまとめにした
コンテナ
を作成しコンテナエンジン
上で動作させる技術のことです。
通常の仮想化と似ている点もありますが、大きく異なる点として
ゲストOS
を用いないということです。
コンテナ
ではゲストOS
を起動することなく
アプリケーションの実行環境を構築することが可能になるため
仮想マシンに比べて少ないリソースで済むのが特徴です。
このようなコンテナ
技術を牽引するソフトウェアとしては
docker
と言うものがあります。
Dockerについて
Docker
は2013年頃に発表されたコンテナ仮想化を用いて
アプリケーションを実行するためのソフトウェアです。
Docker
はコンテナ仮想化を用いたOSレベルの仮想化により
環境自体をアプリケーションと同じようにコード(イメージ)として管理可能にし
アプリケーションの素早い提供を実現します。
Docker
はミドルウェアのインストールや各種環境設定をコード化して管理します。
ソフトウェア開発で実施されてきた構成管理や自動化などを
サーバーの各種設定やミドルウェアのインストールなどにも応用できます。
これらにより、以下のような利点が生まれます。
・ファイルを共有することで、誰でも同じ環境が作れる
・作成した環境イメージを配布しやすい
・スクラップ&ビルドが容易
データ分析の観点から言えば、誰でも同じ環境を作る利点が大きいです。
Python言語を用いた分析環境ではライブラリのバージョン差異が生まれやすく
分析環境が異なることでのトラブルが発生しやすいです。
環境の統一化をすることで軽減することができます。
また開発環境の構築をする時間の短縮化にもつながります。
新規の案件に参画した場合、開発環境の構築に1日かかってしまうこともあります。
それが配布されたイメージ1つで済みます。
当然Docker
の学習コストを支払わなければならないのですが
今後はコンテナを利用した開発が増えていくため、抑えておくメリットは大きいです。
また最近ではコンテナ
を管理するオーケストレーションツール
を使うことで
より運用が楽になって来ています。
最近ではオーケストレーションツール
としてKubernetes
が注目を浴びています。
参考:https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/
まとめ
10年以上前は仮想化が流行った時期がありましたが
そこから少し経って今ではコンテナと言う技術が流行ってきています。
コンテナを扱うことのできるdocker
の利用も高まってきており
開発者のニーズも高まってきています。
これからの開発のスタンダードになると思いますので
抑えておいても損はないかと思います。
明日はもう少し詳しく紹介していきます。
君がエンジニアになるまであと05日
作者の情報
乙pyのHP:
http://www.otupy.net/
Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter:
https://twitter.com/otupython