Docker超入門①〜Dockerってなに?〜【初心者向け】

AI開発者・データサイエンティストを目指す人向け
おすすめUdemy講座一覧

こんにちは,米国データサイエンティストのかめ(@usdatascientist)です.

これから何回かに分けてDockerの使い方について記事にしていきたいと思います.

Dockerを使いこなせるようになると,開発環境構築,デプロイなど様々な場面で重宝しますし,今やエンジニア必須ツールではないかと思います.

最初はわかりにくい要素が多くとっつきにくいかもしれませんが,超絶わかりやすく解説するので付いてきてください!

筆者はDockerに出会ってから環境構築がだいぶ楽になりましたし,今では環境構築は全てDockerを使っています.

本当に必要な知識に絞って解説していきますね.それでは,見てみましょう!

Dockerってなに?

Docker Incという会社が作ったオープンソースのソフトウェアです.Docker Incは2013年から始まった会社でもとはY Combinatorという超有名インキュベータから生まれました.2013年って,まだ6年しか経ってない・・・ にも関わらず今や業界スタンダードとなっています

Dockerは「コンピュータ上にコンテナと呼ばれる箱を作ってそこにOSや他のソフトを入れてあたかも違うコンピュータのように扱えるもの」です.

コンテナ?

うさぎ
なんだか難しそうでよくわかんないよー

大丈夫.概念をよく聞いてもわからないかもしれないけど,使ってくうちになんとなくわかってくる.ITの知識なんてそんなもんでしょ?

一昔前に仮想化という技術が発達しましたね.サーバの中にあたかも違うOSのサーバが入っているように見える技術でした.

あれとなにが違うのでしょうか?

Dockerも一種の仮想化といえる技術です.しかし,従来の仮想化技術(サーバ仮想化)に比べDockerの仮想化(コンテナ仮想化)は軽量でプロセッサやメモリの消費が少なくストレージの使用もわずかなんです.(とにかく軽くて省エネってこと!)

Source: Docker

 

上記の図を見てください.左がVM(従来のサーバ仮想化),右がDocker(コンテナ仮想化)です.

一番の違いはサーバ仮想化ではそれぞれのOSを立ち上げてそれぞれのAppを動かしているのに対し,コンテナ仮想化では仮想マシンごとにOSを立ち上げていません.それはそれぞれの仮想マシンがホストOSのカーネルを共有しているのです.

これによりDockerは従来のサーバ仮想化より軽量で省エネな仮想化を実現しています.

うさぎ
わかったようなわからないような・・・

ピンとこなくても気にしないで!聞くより実際につかってみた方がわかるし,とりあえずサーバ仮想化より軽いんだな程度に思ってくれればいいです.100%仕組みを理解するより,業務で使えることの方がよっぽど重要です.

Dockerでなにができるの?

ぺんぎん
コンテナという箱を作ってそこに違う環境を作れることはわかったけど,それでなにが嬉しいの?

Dockerは主に

  • アプリ開発環境の構築
  • マイクロサービスの実行環境の構築

を目的に使用されます.Dockerはアプリの開発環境をパッケージ化し,配布したり,CICDに組み込むことでテスト実行環境として使うこともできます.
(CICD: Continuous Integration, Delivery & Deploymentの略で,テストの実行やデプロイ等を自動で実行するパイプライン.例えばGithubのmasterブランチにコードがmergeされた時にサーバ上にDockerのコンテナを作ってテストを実行させて問題がなければデプロイするといった感じ)

また,マイクロサービスの実行環境(作ったアプリを実際に動かす環境)としても使用することができ.これを分散アーキテクチャにより並列化させて大量のリクエストに対応できるように高速化させることが可能です.

これらも,徐々に学んでいけばいいですが,特に開発環境の構築は個人で使っていても非常に便利です

例えばあるプロジェクトでpython2を使っていて別のプロジェクトでpython3を使わなければならないケースがあったとします.

Dockerを使えばそれぞれの箱にpython2とpython3とその他必要なパッケージをインストールすることで,簡単に切り替えることができます

また,その箱を簡単に違うサーバに移すこともできるのです!これは本当に便利で,例えば新しいチームメンバーに環境を構築してもらうときに,Dockerの情報(Docker imageと呼ばれるものやDockerfileという定義書)を渡せば簡単に同じ環境を構築することができるのです!

全てのエンジニアにとって有益なソフトウェアといえるので必ず使えるようにしましょう!

それでは,次回はDockerの仕組みについてもう少し詳しく説明したいと思います.

追記:第二回はこちら!↓

Docker超入門②〜Dockerの始め方〜【初心者向け】

1 個のコメント

  • […] Dockerについては、かめ@米国データサイエンティストさんのDocker超入門①〜Dockerってなに?〜【初心者向け】で勉強しました。 環境構築についても同じブログのデータサイエンスのためのPython入門①〜DockerでJupyter Labを使う〜を参考に構築させて頂きました。 ちなみにDocker上にdjangoアプリ開発環境を作成する際は、下記を参考にさせて頂きました。 […]

  • ABOUTこの記事をかいた人

    かめ@米国データサイエンティスト

    アメリカの企業でデータサイエンティストしてます.専門はコンピュータビジョンで,人工知能の製品を開発中. アメリカからデータサイエンス全般をゆるーく配信中