プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【Docker】Docker教科書を読んでDockerを身に付ける①

  • 2018年8月11日
  • 2018年8月13日
  • Docker
  • 44view
  • 1件

はじめに


Dockerについての記事です。
Dockerをネットで検索してみると、「今さら人に聞けない」「Gitと並ぶ必須スキル」等がヒットします。
今後どうだとか、今から学習コスト払ってやる価値とかは置いておいて、単純に「コンテナ型仮想化技術」というのを頭で理解して使っていきたいと思ったのでメモしていきます。この備忘録を一通り書き終えたときには今注目のKubernetesとかいうのもすんなり入ってくるくらいの頭になるといいです。そこらへんが目標。

ということで、本記事の対象となるのは以下のような方です。

・Dockerを現場で触っているけどなんとなくすぎる人
・Dockerを勉強していきたい人

進め方としては、Docker教科書を読み、頭で理解したことを簡潔にまとめていきます。
この記事を読んで、Docker教科書の復習ができる←私
この記事を読んで、入ってこなかった知識をDocker教科書で補完する←読む方

なんて一丁前に書きましたが間違いなどはコメントまたはメールで教えて下さると助かります。

Docker導入の意味

そもそもDockerをなんで使うかというと、アプリケーションのもっと基礎の部分を知っておく必要がある

アプリケーションの構成


私達が使っている、作っているアプリケーションというものは、システム基盤というものの上に成り立っている。
システム基盤とは、アプリケーションを動かすためのハードウェア、OS、ミドルウェアのことなどを指す。

クラウド登場による大きな変化


これまでは多くの企業が独自にサーバーを建て、システムに合わせたインフラ構築をしていた。
クラウドサービスの主流化により、アプリケーションは一台の物理ホスト上で動くのではなく、分散環境での稼働が基本になった。
それにより、システム基盤はインフラエンジニアが手動で構築するのではなく、アプリケーションエンジニアが自ら構築することが可能になった。

Dockerが成せること


そんなシステム基盤の複雑なOSの選定、ミドルウェアの選定、各種バージョン等を管理し、簡単に構築、破壊ができる。
誰もが同じインフラ環境を簡単に構築することができる状態を一瞬で作るというのが、Dockerの強み。

Dockerの概要

コンテナについて

Dockerの概要を知るために、コンテナの概要を知る必要がある。
コンテナとは、ホストOS上に論理的な区画(コンテナ)を作り、アプリケーションを動作させるための必要なライブラリ群やアプリケーションを一つにまとめる技術のこと。
そうすることで個別のサーバーのように使うことができ、かつオーバーヘッドが少ないため、軽量で高速に動作するのが特徴。

VirtualBoxとの違い

VirtualBoxやVMwareはホスト型サーバ仮想化と呼ばれ、仮想化されたソフトウェアの上でゲストOSが動作する技術のこと。
手軽に導入できる反面、オーバーヘッドが大きいのが特徴。

Dockerの概要

Dockerは、前項のコンテナ技術を内部で使っていることで、アプリケーションに必要な環境を一つのイメージにまとめ、そのイメージを使い、様々な環境で実行環境を構築・運用するためのプラットフォームとなる。

Dockerが提供している機能


Dockerが何をするものかというのをここまで書いてきたが、次はDockerがどんな機能を持っているかを書いていく。

Dockerイメージを作る(build)

アプリケーションで必要なプログラム本体からインフラ周りの環境を一つにまとめてDockerイメージというものを作る。
DockerイメージはDockerfileという設定ファイルを書くことで作ることができる。

Dockerイメージを共有する(ship)

Docker Hubで公開されている、すでにベースイメージが出来上がっている状態のDockerイメージを入手することができ、また、公開して共有することもできる。

Dockerコンテナを動かす(run)

Dockerイメージを使って、サーバーを動かす。

さいごに

以上で、アプリケーションの構成について、Dockerとはというところをまとめました。
次回はDockerのインストールと簡単に触ってみるという部分を書きます。
【Docker】Docker教科書を読んでDockerを身に付ける②