【まとめ】Dockerとは?仕組みやメリット、基本的な使い方を解説

アイキャッチ画像
  • Dockerとは?
  • Dockerの仕組みやメリット、基本的な使い方とは?
  • Docker-composeとは?

本記事ではこのような疑問を解決します。


エンジニアの世界に飛び込んだら避けては通れないツールがDockerです。


今回は初心者のためにDockerについてのあれこれを解説していきます。

Dockerとは?

Dockerとはコンテナ技術を用いてアプリケーションの開発やデプロイを簡単に行う仕組みのことです。

ネットや書籍などで様々な説明がなされていますが、
「Dockerって何?」と聞かれたら、個人的にこの説明が1番しっくりきます。

もっとざっくり言うと、「サーバーから独立させて仮想環境を動かせる仕組み」です。

Dockerのメリット

Dockerのメリットは以下の通りです。

・コマンドを何行か打つだけで仮想環境を構築できる

・どのサーバーやPCでも同じ環境を立ち上げることができる

・開発環境ごとデプロイすることができる

・コードで管理できるため、環境の構築や配布がやりやすい

Dockerの仕組み

Dockerの仕組みを理解するためには以下の3つの関係を確認する必要があります。

・Dockerエンジン

・Dockerイメージ

・Dockerコンテナ

○Dockerエンジン

Dockerエンジンとはこの後説明するDockerイメージとDockerコンテナを管理するアプリケーションのことです。

簡単にいうと、Dockerそのものになります。

ちなみに、中身ではクライアントであるDockerクライアントからサーバーであるDockerデーモンのAPIへアクセスすることによって、Dockerイメージ・コンテナに関する操作を行います。

中身の動きはちょっと難しそうなので無視でOKです。

○Dockerイメージ

Dockerイメージとは仮想環境の種類のことです。

もっと言うと、次に説明するDockerコンテナを作成するための雛形のことです。

例えば、Nginx環境を作りたい場合はNginxのDockerイメージを使う、MySQL環境を作りたい場合はMySQLのDockerイメージを使う、といった感じになります。


そして、このDockerイメージはレジストリと呼ばれるDockerイメージを管理している場所から入手することができます。

レジストリとして有名で世界最大なのがDocker社が提供しているDockerHubです。

DockerHubでは欲しいイメージ名(環境名)を検索し、イメージの詳細ページでコマンドをコピーし、ターミナル等で実行することでDockerイメージを入手できます。

iPhoneでいうところのAppストアですね。

○Dockerコンテナ

Dockerコンテナとは実行されるプロセスそのもののことです。

DockerコンテナはDockerイメージを使って立ち上げます。

オブジェクト指向プログラミングに例えると、イメージがクラスでコンテナがインスタンスといった感じです。

ちなみにDockerイメージからDockerコンテナを立ち上げることを「ビルドする」と呼びます。

Dockerにおける上記3つの関係は、
Dockerエンジンが土台にあり、その上にDockerイメージが乗っかって、Dockerイメージ内にDockerコンテナが置いてあるというイメージです。

さらにわかりやすくゲームに例えると、
Dockerエンジンがゲーム機、Dockerイメージがゲームソフト、Dockerコンテナがセーブデータという関係になります。

Dockerのインストール

DockerはホストOS(macOSやWindows、Linuxなど)上にインストールします。

現時点でDockerはLinux上でしか動かないため、MacやWindowsでは専用のソフトウェアが必要です。

ここでは簡単にmacOSやWindows、Linuxそれぞれのインストール方法を示します。

○macOS

こちら(Docker公式サイト)からインストーラーをダウンロードしてインストールします。

○Windows

Windowsでは事前にWSL2(Windows上でLinux用システムを動かせる設定)を有効にしておく必要があります。

以下のドキュメントを参考にインストールしてください。

・WindowsにDockerをインストールする手順(Docker)

・WSL2の設定(Microsoft)

・Windows用Dockerインストーラー(Docker)

○Linux

各Linuxディストリビューションのパッケージ管理ツールでインストールします。

例えば、aptやyumなど。

Dockerの操作方法

ここではDockerの基本的な操作方法を示します。

Dockerはバージョン1.13のリリースにおいて「docker [何を] [どうするか]」の体系(新体系)にコマンドが再編成されました。

旧体系のコマンドも引き続き使用できますが、Docker社は新体系のコマンドを推奨しています。

(レジストリから)イメージを取得する

旧)$ docker pull イメージ名
新)$ docker image pull イメージ名

・取得済みのイメージを確認する

旧)$ docker images
新)$ docker image ls

・コンテナの作成と実行

旧)$ docker run イメージ名など
新)$ docker container run イメージ名など
※runはbuildとstartの2つを内部的に実行する

・コンテナを停止する

旧)$ docker stop コンテナ名
新)$ docker container stop コンテナ名

コンテナを再起動する

旧)$ docker start コンテナ名
新)$ docker container start コンテナ名

・コンテナを削除する

旧)$ docker rm コンテナ名
新)$ docker container rm コンテナ名

Dockerfile

Dockerイメージは基本的にDockerHubから入手します。

しかし、DockerHubに欲しいイメージがない、自分の思い通りのイメージが欲しい、といった場合はイメージを自分で作ることができます。

そして、Dockerイメージを作るために使用するのがDockerfileです。

DockerfileではOS名やコマンドなどいくつか種類があるDockerコードを記述します。


ちなみにDockerfileの中身はこんな感じです。

FROM ubuntu:21.04

LABEL version=“2.0”
LABEL description=“Apacheサーバー”

RUN apt-get update
RUN apt-get install -y apache2

CMD [“apachectl”, “-D”, “FOREGROUND”]

Docker-compose

Dockerでは一般的に複数のコンテナを同時に立ち上げて使います。

ただ、それぞれのファイルごとに起動などの操作を行うのは面倒です。

そんな問題を解決してくれるのがDocker-composeです。

Docker-composeは複数のコンテナを一元管理する仕組みのことです。

Docker-composeは別途インストールをしてymlファイルで管理していきます。


ちなみにymlファイルの中身はこんな感じ。

version: ‘2’
services:
    db:
        image: mysql
    web:
        build: .
        command: bundle exec rails s -p 3000 -b ‘0.0.0.0’
        volumes:
            - .:/myapp
        ports:
        - “3000:3000”
        depends_om:
            - db

なお、Docker-composeの基本的な操作方法は以下の通りです。

・複数のコンテナをビルドする

$ docker-compose build ―no-cache

・複数のコンテナを起動する

$ docker-compose up

・複数のコンテナを同時停止する

$ docker-compose down

Dockerによるディスク容量に注意する

Dockerでは使用していないオブジェクト(コンテナやイメージなど)を明示的に削除命令しない限り、削除されません。

そのためPCやサーバー上のディスク容量を大きく喰ってしまう可能性があります。

そんな時は以下のコマンドを実行します。

$ docker system prune

まとめ

以上がDockerの概要や仕組み、メリット等になります。

Dockerについての理解が深まったのではないでしょうか。

本記事を入門として、公式ドキュメント等を読みながらDockerをいじってみてください。

最後までお読みいただきありがとうございました。