はじめに
本記事は業務でDockerやKubernetesを利用するようになったものの、初心者すぎてよくわかっていない私が様々な書籍や講座で調べて学んだ内容を残していくものになっています。
Dockerについてある程度学習した後、Kubernetesの内容に進んでいく予定です。
Dockerとは
Dockerってざっくりどんな技術なの?
私みたいな初心者は最初から深い内容を詰め込むとパンクしてしまいます...
まずは「ざっくりこんなもの」から知っていきたい...
ということでまずはDockerのドキュメントの概要あたりをちょっと読んでみます。
Dockerはアプリケーションを開発(developing)、移動(shipping)、実行(running)するためのオープンなプラットフォームです。
Dockerがあれば、アプリケーションを管理するのと同じ方法で、あなたのインフラも管理できます。
Docker的な手法を最大限活用しますと、テストやコードのデプロイを素早くできますので、コードを書いてから、プロダクション(実行環境)で動かすまでにかかる時間を著しく軽減できます。
Docker は、コンテナ(container)という緩やかに隔離された環境 (isolated environment)で、アプリケーションのパッケージ化と実行をする機能を提供します。
コンテナという技術でインフラの管理を楽にしてくれる、デプロイが簡単になるみたいな感じでしょうか。
インフラの管理やデプロイが簡単になるってどういうこと?
はい、ざっくり読んでるだけなので当然こうなります。
ソフトウェア開発では、アプリ開発者がコードを書いて、インフラ/運用エンジニアが本番環境にデプロイするような流れが多いかとおもいます。
この時、開発環境/テスト環境/本番環境でそれぞれが全く同じ環境ではないということがよくあります。
つまり「開発環境では動いていたのに本番では動かない」ということが起こります。
そして、Dockerを利用することで、この問題をどうやら解決できるみたいです。
開発者がコードやライブラリをパッケージングしてDocker Imageというものをつくり(コンテナ化して)、インフラ/運用エンジニアにDocker Imageをそのまま渡し本番環境にデプロイする。
こうすることで「開発環境では動いていたのに本番では動かない」ということを防げるんですね。
仮想化の技術(VM)と何が違うの?
コンテナという技術を利用して、別々のマシンで同じ環境を構築する。
なんとなく仮想化と似てますよね。違いとしては以下のような感じです。
- 仮想化
- ホストOS上にゲストOSを用意してアプリケーションを実行する
- Docker
- ホストOS上に1つのDocker Engineを起動して複数のコンテナを起動する
Dockerを使うときのメリットは、、、
- 軽い
- ゲストOSを複数作成するわけではないのでプロセッサやメモリの消費が少ない
- コンテナ上に「OSっぽいもの」はあるが、OSの機能のいくつかをホストOSに託すことで軽くなっている
- ストレージの使用量が減る
- OSイメージのサイズがだいたい5~10GBくらいに対して、Docker Imageのサイズは1~2GBらしい
- 起動時間が早い
- 仮想化と比べると、カーネルをいちいちロードする手間が省ける
- 複数環境での運用が楽
- DockerさえインストールされているOSならどこでもコンテナを起動できる
ここまで出てきた用語について
コンテナとかdocker ImageとかDocker Engineとか、しれっと出てきてるのに意味説明してない単語ありますね。ここで少しだけ書いときます。
コンテナ
データやプログラムを入れておくための入れ物、箱みたいないイメージでしょうか。
とりあえずそれくらいのイメージで、、、
Docker Image
コンテナを作成するための素。
中に入れるソフトウェアによってそれぞれ用意されたイメージを使います。
nginxを利用するために公開されてるイメージを使う、みたいな感じ。
コマンドの使い方とかは後でいろいろ出てくるんですが、下記のような感じでイメージを取得します。
docker pull nginx
Docker Engine
Dockerをつかうためにインストールするソフトウェアのこと。
Dockerをインストールしてみよう
私はMacBookを使っているのでDocker Desktop for Mac
で行いました。
- Docker Desktop for Mac : https://docs.docker.com/docker-for-mac/install/
- Docker Desktop for Windows: https://docs.docker.com/docker-for-windows/install/
- Linux: https://docs.docker.com/engine/install/
最後に
今回はDockerって何?みたいなところからインストールするまでをまとめました。
具体的に手を動かしながら学ぶのはこれからなので退屈な内容になっちゃいましたが、きっとこれから学習を進めるにあたっては通らなければならない大事な部分になると思います。(そうであって欲しい。)
それでは次回Part2に進みます。