ここでは「YOU! ドッカーって簡単に言うと何?」と聞かれた際に簡単に応えられるようまとめてみました。
短い時間でDockerをザックリ理解したい方、学習する前に弾みをつけたい方にぜひお読みいただければと思います。

Dockerってなに?

アプリケーションの開発・実行するための仮想環境を作る仕組みです。

Dockerの長所は?

  • 環境構築も破棄もお手軽にできる
    コード1行で仮想環境の取得から構築ができます。
    終了、破棄するのも1〜3行で完結するお手軽さです。

  • 動作が軽い
    負荷が低いので1つのマシンで、複数の環境を立ち上げることが容易です。
    そのため、WEBサーバー環境、DBサーバー環境、logだけ受け取る環境などそれぞれ連動して複数立ち上げるなんてこともできます。しかも、起動も終了も早いです。

他の仮想環境との違い

Dockerはコンテナ型、VirtulBoxなどのホスト型の仮想化技術とは異なります。

  • ホスト型(VirtulBox)
    ホストOS上にそれぞれ個別のOSを呼び出し仮想環境を立ち上げます。
    そのため、仮想環境と同じ数の複数のOSが立ち上がってしまうため、動作もどんどん重くなっていきます。
    起動もそのたびに1からOSを立ち上げるので当然遅いです。

  • コンテナ型(Docker)
    動作環境をコンテナに封じ込めて個別のサーバーのように使うことができます。
    つまり、それぞれのコンテナがリソースをシェアして共同で使っています。
    そのため、
    仮想環境ごとにOSを1から立ち上げるわけではないので起動も動作も早いです。
    当然ファイルサイズも小さくなります。

kasouka.png

オーバーヘッドが少ないため、軽量&高速!
立ち上がりも終了もサクサク動く!

使い方

インストール

公式サイトのメニュー「Get Docker」からダウンロード。
https://www.docker.com/

macOSの場合、
案内に従って「Docker CE for Mac」をインストール。
dockerを使用する際は、アプリケーションから「Docker」を起動すると、ターミナルから使用することができます。

基本的な操作の流れ

  1. Dockerでは仮想環境の元となるイメージを取得します。

  2. imageを元にコンテナを生成します。
    このコンテナが仮想環境となります。
    コンテナはstop,start,restart,削除したり、また再度イメージから作成など自在に操作できます。

    オブジェクト指向に例えると、
    image →クラスのようなもの
    コンテナ →インスタンスのようなもので使用する際にimageから生成される。

  3. 仮想環境の終了操作
    コンテナをストップします。
    Dockerを使わないなら、ストップしたコンテナを破棄します。

主なDockerコマンド

  • イメージを取得
docker pull イメージ名

取得したいイメージ名とともにコマンド。
イメージは「Docker Hub」で公開されています。
https://hub.docker.com/

  • イメージ検索
docker search イメージ名

サイトで確認しなくても検索することもできます。
centosや、ubuntuなどそれっぽいワードで検索できます。

  • ダウンロードしたイメージの確認、イメージの削除
docker images

ローカルにpullしたimageの一覧を表示。

  • イメージの削除
docker rmi イメージID
  • コンテナ生成(仮想環境実行)
docker run [OPTIONS] イメージ名

主役のコマンドですね。
runによって、イメージがコンテナ化されて仮想環境として稼働します。
-i -t オプションでコンテナ内のターミナルに入れるなど、
複数のオプションが用意されています。

  • コンテナ一覧の表示
docker ps [OPTIONS]

稼働中のコンテナが一覧として表示されます。
停止したコンテナも表示させたいときは -aのオプションを付与します。

  • コンテナの停止、再起動
docker stop コンテナ名(ID)
docker start コンテナ名(ID)

コンテナ名はdocker psNAMESで確認できる。コンテナIDでもOKです。

  • コンテナの削除
docker rm コンテナ名(ID)

削除はstopでコンテナを停止してから実行します。

まとめ

今回は、超入門ということで、基本的な説明とコマンド内容のみとなります。
Dockerは掘り下げると、より細かい操作ができたり、コンテナ同士の連携したり、comittして新たなイメージを作ってpushしたり、エクスポートして人に配ったり、はたまた、registryにして、ローカルネットワークだけで運用したりと非常に応用がきく、様々な使い方ができます。

エベレストよりも高く、マリアナ海溝よりも深い世界が広がってます!
ぜひ、自分で試してみてください。
読んでいただきありがとうございます。