🐳

【Docker】基礎まとめ

2022/02/06に公開

概要

  • Dockerの基礎をまとめました。

1. Dockerとは

  • Dockerとは、Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのオープンソースのソフトウェアです。
  • コンテナとは「あるアプリに必要な環境を、ホストOS(Linux)のカーネルを利用して、パッケージ化してまとめた箱」といったイメージです。
    • カーネルとは、OSの中核部分に位置するソフトウェアで、ハードウェアとソフトウェアの仲立ちをしています。
  • また、Dockerはミドルウェアのインストールや各種環境設定をコード化して管理します。

2. Dockerのメリット

  • Dockerのメリットは下記です。

コード化されたファイルを共有することで、どこでも誰でも同じ環境が作れる

  • 開発環境(Windows上)では動いていたけどLinuxで動かなかった、といったケースも、開発工程からDockerを活用していくことで防ぎやすくなります。
  • そして、開発工程の中で使っていた環境をそのまま本番環境に持っていくことも可能なため、環境差分が少なく、環境による問題を減らすことができます。

作成した環境を配布しやすい

  • 作成したDockerイメージを他の人にも渡して使ってもらうことで、各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながります。
  • 開発環境の準備で、説明不足や手順ミスで、発生する時間を防ぐことができます。

スクラップ&ビルドが容易にできる

  • クラスタ構成を構築する場合も、Dockerイメージがあれば、それを起動する名前(コンテナ名)などを変えるだけで、複数の環境(コンテナ)を起動できるので、一から手順に沿って環境を作る作業もなくなり、クラスタ構成を構築するのも容易になります。

アプリケーションの起動が早い

  • ゲストOSの起動を必要としないので、起動が早いです。

3. Dockerの基本機能

  • Dockerの大きな機能は以下の3つです。

Dockerイメージを作成する機能(Build)

  • Dockerイメージとは、アプリケーションを動かすために必要な、コード/ライブラリ/ミドルウェア/OSなどをひとまとめにしたものです。
  • Dockerイメージを元にDockerコンテナを作成します。
  • Dockerイメージは、コマンドラインから作成したり、Dockerfileから作成することが可能です。

Dockerイメージを共有する機能(Ship)

  • Dockerレジストリ(Docker Hub)を利用し、イメージを管理します。
  • Docker Hubでは、イメージのアップロードやダウンロード、検索などが行えます。

Dockerコンテナを実行する機能(Run)

  • Dockerイメージをビルドし、コンテナとして実行することができます。
  • コンテナは、開始/停止/削除が行えます。

4. Dockerコンポーネント

  • Dockerは、以下のコンポーネントを利用して各機能を実現しています。

Docker Engine

  • Dockerイメージ作成やコンテナの操作(起動/停止/削除)などを行うためのDockerのコア機能です。
  • Build と Run の役割を果たします。

Docker Registry

  • Dockerイメージを管理(公開/共有)する機能です。
  • Ship の役割を果たします。

Docker Compose

  • 複数のDockerコンテナを使うDockerアプリケーションを、定義・実行するためのツールです。

Docker Machine

  • 仮想マシン上でDocker Engineを管理(インストール/開始/停止)するためのツールです。

5. Dockerコマンド

  • 基本的なDockerコマンドを下記にまとめます。
    • オプションは一覧表示のみ記載しています。

イメージ関連

// イメージ取得
❯ docker pull <Dockerイメージ名>

// イメージ一覧確認
❯ docker images

// イメージ削除
❯ docker rmi <Dockerイメージ名 or DockerイメージID>

コンテナ関連

// 起動しているコンテナ一覧確認
❯ docker ps

// 全コンテナ一覧確認
❯ docker ps -a

// コンテナ作成
❯ docker create <Dockerイメージ名 or DockerイメージID>

// コンテナ起動
❯ docker start <Dockerコンテナ名 or DockerコンテナID>

// コンテナ作成・起動
❯ docker run <オプション> イメージ名<:タグ名> <引数>

// コンテナ停止
❯ docker stop <Dockerコンテナ名 or DockerコンテナID>

// コンテナ削除
❯ docker rm <Dockerコンテナ名 or DockerコンテナID>

6. まとめ

  • 最後まで閲覧頂きありがとうございました。
  • 誰かの役に立てれば幸いです。
  • 次はDockerfileについて、記事を書きたいと思います。

Discussion