メインコンテンツへスキップ
  1. ノート/
  2. ツールとデプロイ/

Dockerの基本

·1085 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml

Dockerは、Linuxカーネルの機能を利用してアプリケーションと実行環境をコンテナとして分離・配布するプラットフォームです。仮想マシンとは異なり、通常は各コンテナがゲストOSのカーネルを持つのではなく、ホストのカーネルを共有します。

1. 仮想マシンとコンテナ
#

仮想マシンは、ホスト上に仮想ハードウェアを作り、ゲストOS全体を起動します。OSカーネルも含めて分離できる一方、メモリやディスクを多く消費し、起動にも時間がかかります。

コンテナは、プロセス、ファイルシステム、ネットワークなどを分離して実行します。ゲストOS全体を起動しないため、比較的軽量で起動が速く、同じホスト上で多くのアプリケーションを動かせます。

2. Dockerの主要概念
#

イメージ(Image)
#

イメージは、アプリケーションのファイルシステム、実行ファイル、ライブラリ、既定の設定をまとめた読み取り専用のテンプレートです。Docker Hubから取得することも、自分でDockerfileからビルドすることもできます。

コンテナ(Container)
#

コンテナは、イメージから作成した実行中または停止中のインスタンスです。コンテナ内のプロセス、ネットワーク、マウント、環境変数などを個別に設定できます。

ボリューム(Volume)
#

コンテナの書き込みレイヤーは、コンテナを削除すると失われる場合があります。データベースやアップロードファイルを保持したいときは、ホストやDocker管理のボリュームをマウントします。

docker volume create app-data
docker run --rm -v app-data:/var/lib/app alpine ls /var/lib/app

3. 基本コマンド
#

docker pull nginx:latest
docker run -d --name web -p 8080:80 nginx:latest
docker ps
docker ps -a
docker logs web
docker stop web
docker rm web

イメージとコンテナは別のものです。docker rmはコンテナを削除しますが、イメージや外部ボリュームまで自動的に削除するとは限りません。

4. Docker Desktop
#

Docker Desktopでは、GUIから次の概念を確認できます。

表示意味
Containersイメージから作られた実行単位
Imagesコンテナを作るためのテンプレート
BuildsDockerfileからイメージを作る処理
Volumesコンテナの外側へデータを保存する領域

Docker Desktopは操作を分かりやすくしますが、内部ではDocker Engineと同じ基本概念を使います。CLIで同じ操作を実行できるようになると、サーバー環境でも応用しやすくなります。

まとめ
#

  • 仮想マシンはゲストOS全体を動かし、コンテナはアプリケーションプロセスを分離する。
  • イメージはテンプレート、コンテナはその実行インスタンスである。
  • 永続化したいデータはボリュームへ保存する。
  • 本番環境では、タグの固定、最小権限、秘密情報の分離、イメージの更新を行う。

评论