BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【コンテナおじさん】【コンテナ】【Docker】コンテナ学習第2回

はじめに

こんにちは!BFT名古屋支店の松野です。
前回のコンテナ学習では仮想化とコンテナを比較しながら、自分なりにコンテナの利点をまとめてみました。今回もコンテナ学習をして自分が分かったことをまとめていこうと思います。それではよろしくお願いします!

前回の記事は以下リンクからどうぞ。

bftnagoya.hateblo.jp

コンテナおじさんって何?という方は以下リンクからどうぞ。

thinkit.co.jp


コンテナ技術って何やってるの?

今回はまずコンテナ技術の詳細にもう少し触れていきたいと思います。前回の記事でまとめたようにコンテナとはホストOSとOSカーネルを共有することで、ゲストOSなしでアプリケーションを実行できる技術でした。では、どうしたらそのようなことが実現可能になったのでしょうか?

コンテナエンジン

私たちが日常的に使うオフィスソフトやお絵かきソフトはOS上でプロセスとして実行されます。実はコンテナもひとつのプロセスとして実行されています。とても簡単なことのように思えるかも知れませんが、例えばWinOS上でLinuxOSのアプリケーションを起動するということも出来てしまいます。これを実現するためにコンテナ内にアプリケーションの実行に必要なミドルウェアやOS固有のライブラリが内包されています。そしてこれらコンテナを管理しているのがコンテナエンジンと呼ばれるものです。
これまでに様々なコンテナエンジンが登場してきました。2008年にはIBM社が「Linux Containers(LXC)」を、2013年にはGoogle社が「Let Me Contain That For You(lmctfy)」をリリースしました。そしてその同年3月にdotCloud社(現Docker社)からリリースされたのがコンテナエンジンとして現在広く使われている「Docker」になります。クジラのマークで有名なあれです。

Docker

Dockerはコンテナへの基本的な操作を「Build, Ship, Run」というシンプルなワークフローによる運用を定着させました。ひとつひとつ確認していきましょう。

  • Build:コンテナを任意の環境で実行するために、「コンテナイメージ」というコンテナの素となるデータが必要になります。コンテナイメージにはアプリケーションの実行に必要なファイルや、実行環境を作成するのに必要な情報が含まれています。Dockerを使うとこのコンテナイメージをDockerfileから簡単に作成(Build)することが出来ます。

  • Ship:Dockerによって作成されたイメージは、「レジストリ」と呼ばれるコンテナイメージ配布用のサーバーやDockerHubなどを使用することで、共同開発者や他の端末に配布できます。レジストリ等にイメージをアップロードすることをpushといい、ダウンロードすることをpullといいます。

  • Run:Buildされ他環境にShipされたコンテナイメージはDockerによって実行することが出来ます。Dockerはイメージに含まれる情報からコンテナの実行環境を作成し、あらゆる環境でコンテナを実行(Run)します。

このようにDockerを使えばコンテナに対する基本的な操作が行えます。

おわりに

今回はコンテナ技術の詳細とDockerの概要についてまとめさせて頂きました。
前回の記事執筆時にも感じていましたが、自分自身がDocker等のコンテナ技術の実務経験がないため、記事の構成や書くべき内容、どこまで書くべきかなどで非常に悩みました。自分と同じようなコンテナビギナーの方に少しでも読んでもらえたら嬉しいです。次回はDockerの各機能の詳細とKubernetesにも少し触れられたらなと思っています!

参考文献