Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

100日後にエンジニアになるキミ - 95日目 - 開発環境 - Docker について

昨日までのはこちら

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を用いた仮想化がほとんどでした。
最近ではコンテナと呼ばれる技術が出てきています。

image.png

参考:https://pfs.nifcloud.com/navi/tech/container_virtualization.htm

従来の仮想化では1台の物理マシン上にはホストOSが起動し
そのOS上で複数のゲストOSが稼働していました。

しかし仮想化ソフトを使用した仮想化環境にもデメリットがあります。
複数OSを利用することによる性能劣化や
仮想化ソフトウェアの介在による複雑化などがあります。

そこで注目されているのがコンテナです。

コンテナホストOS上にアプリケーションの起動に必要な
アプリケーション・ライブラリ・設定ファイルなどをひとまとめにした
コンテナを作成しコンテナエンジン上で動作させる技術のことです。

通常の仮想化と似ている点もありますが、大きく異なる点として
ゲストOSを用いないということです。

コンテナではゲストOSを起動することなく
アプリケーションの実行環境を構築することが可能になるため
仮想マシンに比べて少ないリソースで済むのが特徴です。

このようなコンテナ技術を牽引するソフトウェアとしては
dockerと言うものがあります。

Dockerについて

image.png

Dockerは2013年頃に発表されたコンテナ仮想化を用いて
アプリケーションを実行するためのソフトウェアです。

Docker

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

otupy
乙pyと申します 主にデータを取り扱う仕事をしてたりします。 使用言語 Python , Javascript , SQL Youtubeチャンネル 乙py https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw/featured
http://www.otupy.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away