前提
dockerの名前ぐらいは聞いたけど、よくわからんという方向けです。
環境
- Windows 10 Pro
動画
qiitaがYoutube埋め込み対応したらしいので貼ってみました。
動画で見たい方はこちら。
ここからは文章で確認した人向け
動画の前半の部分だけ文章で書いておきました。
実際に動かしている部分は動画を参照してください。
仮想環境とは
実際に存在する物理的なコンピューターに仮想的なコンピューターやOSの環境を作ることです。
たとえば、
Windowsのパソコンに別のOSの「Linux」とか「Mac」を入れるようなことですね。
仮想技術の種類
そんな仮想環境ですが、実現するための仮想化技術にはいくつか種類があって今回は「ホスト仮想化」というのと「コンテナ仮想化」について確認してみます。
【ホスト仮想化】
コンピューターの中にコンピューターを仮想的に作ったようなものです。
仮想的なハードウェアもあって、ネットワークの設定やメモリの設定・ストレージのサイズなども設定できます。
有名な製品には「VM Ware」とか「Virtual Box」がありますね。
特にVM Wareは本番のサーバ環境を構成する際にも利用されますね。
コンピューターの中にコンピューターを構成するだけあって、
起動に時間がかかるし本体のコンピューターのマシンパワーも多く使います。
【コンテナ仮想化】
こちらはコンピューターの中にコンテナという箱を作ってOSの一部を入れたようなものです。
仮想的なハードウェアがあるわけではなく、仮想的なネットワーク設定ぐらいが存在します。
ハードウェアはホストのハードウェアをそのまま使います。
コンテナがプロセスのひとつとして動作します。
ホスト仮想化と比較して、CPU/メモリなどのマシンパワーの使用量が少なくて起動が早いという特徴があります。
有名な製品は「docker」ですが、他にもいくつかコンテナ技術の製品はあります。
AWSのFargateもコンテナ技術ですね。
【ホスト】とは
仮想化技術では仮想環境をもつ本体のコンピューターのことを「ホスト」呼びます。
Infrastructure as Code
コンテナ仮想化ではAnsibleとかChefのようにインフラのコード化をすることもできます。
「Infrastructure as Code」と言って、コードにしておくことで再現性のあるインフラ環境を用意することができます。いつでも簡単に同じインフラ環境を作り直すことができるんです。
なにがうれしいの?
- パソコンに簡単にサーバ環境を作れる。
- データベースなどをすぐに初期状態にできる。
- サーバにコンテナごとリリース(同じ環境)
- 環境をすぐに復旧できる。
- 同じ環境をすぐに複数作れる。
システム開発ではローカル環境にデータベースを用意することも多いですね。
その環境を作るのにいちいち手順書をもとに準備したりテーブル定義やマスタデータが変わる度に各自が反映するのは大変ですね。
コンテナを使うことで、データベースの最新の情報をコードで共有すると各自はコンテナを再作成するだけでいいというわけですね。
新しく参画したメンバーにもコマンド一つで環境が出来上がるって最高ですよね。
Docker Install
- Linux, Windows, Macにインストール可能
- ここからインストール
Windows 10 homeにはDocker Toolboxしか対応してなくて大変だったが、最近はWindows 10 homeでも「Docker Desktop for Windows」が使えます。
Hello world
インストールできたらHello worldやってみましょう。
Windowsならコマンドプロンプトやpower shellを開いてdocker run hello-world
を実行してみてください。
> docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
※このときdocker hubというところから「hello-world」のdockerイメージがダウンロードされています。
Docker Hub
Docker Hubは色んな人がコンテナのイメージをアップロードして公開している場所です。GitHubをご存知の方はGitHubのdocker版と思ってもらったらいいと思います。コンテナイメージというのはコンテナの種になるイメージファイルです。
よく使うコンテナイメージの例はこんなものがあります。
- centos
- ubuntu
- python
- java
- php
- redmine
- jenkins
- nginx
- httpd
- mysql
- postgres
自分でもアップロードして配布できます。
チャレンジ
dockerインストールした人はwordpressぐらいなら数分ぐらいで作れるのでやってみてください。
P.S.
動画内のコードは今度貼ります。