コンテナとDocker

luagate/container-docker-introコンテナ入門22クラウド・インフラ

上から下へ、全 22 枚そのまま並べています。

発表モードで開く

コンテナ入門

コンテナとDocker

軽量な箱 〜どこでも動く環境〜

1
1

目次

今日の流れ

1. コンテナとは

2. 仮想マシンとの違い

3. Dockerのしくみ

4. コマンドと活用

5. まとめと振り返り

2
2
コンテナ入門 - イントロ

今日のゴール

この時間で身につけてほしいことです。

  • コンテナが「軽量な箱」だとイメージできる
  • 仮想マシンとの違いを説明できる
  • Dockerの役割が分かる
  • イメージとコンテナの関係を理解できる
  • 自分の環境では動く問題を解決できる理由が分かる
10
3
コンテナ入門 - イントロ

コンテナ とは

アプリと必要なものをひとまとめにした、軽くて持ち運べる箱です。

コンテナ(Container)

アプリと、その動作に必要なライブラリや設定をひとつにまとめた実行単位。OSのカーネルを共有するため軽く、すぐに起動できる。

アプリと必要物を1つに梱包

OSの中核を共有して動く

とても軽く起動が速い

どこでも同じように動く

11
4
コンテナ入門 - イントロ

コンテナのうれしさ

軽さ・速さ・どこでも動くという3点が大きな魅力です。

軽い
  • OSを丸ごと持たない
  • 必要なものだけ梱包
速い
  • 数秒で起動できる
  • 作って消すのが手軽
どこでも動く
  • 環境差に強い
  • 同じ箱を持ち運ぶ
12
5

コンテナ入門 - VMとの違い

2

第2部 仮想マシンとの違い

OSを共有する軽さ

20
6
コンテナ入門 - VMとの違い

VMとコンテナの構造の違い

仮想マシンは各自がOSを持ち、コンテナはOSの中核を共有します。ここが軽さの違いです。

  • VMはVMごとに完全なOSを持つ
  • そのぶん重く起動も遅め
  • コンテナはOSの中核を共有する
  • アプリ部分だけを箱に入れる
  • 結果としてコンテナは軽くて速い
21
7
コンテナ入門 - VMとの違い

仮想マシンとコンテナの比較

OSの持ち方や起動の速さに、はっきりした違いがあります。

仮想マシン
コンテナ

OS

各自が完全なOSを持つ

OSの中核を共有

重さ

重い

軽い

起動

分単位のことも

数秒で起動

隔離

強い隔離

プロセス単位の隔離

22
8
コンテナ入門 - VMとの違い

起動にかかる時間(イメージ)

OSを丸ごと立ち上げるVMより、コンテナはずっと速く動き出します。あくまでイメージです。

60483624120
60
3
仮想マシン
コンテナ

出典: 起動時間の傾向を示す概念図(概算)

23
9

コンテナ入門 - Docker

3

第3部 Dockerのしくみ

イメージ・コンテナ・Dockerfile

30
10
コンテナ入門 - Docker

Docker とは

コンテナを手軽に作って動かすための、代表的なツールです。

Docker

コンテナの作成・配布・実行を簡単にするためのプラットフォーム。設計図からイメージを作り、そこからコンテナを起動するまでを一貫して扱える。

コンテナを手軽に扱える

設計図からイメージを作る

イメージからコンテナを起動

配布や共有もしやすい

31
11
コンテナ入門 - Docker

イメージとコンテナの関係

設計図からイメージを作り、イメージから実際に動くコンテナを起動します。

1. Dockerfile

作り方を書いた設計図

2. イメージ

設計図から作る雛形

3. コンテナ

イメージから起動した実体

4. 何個でも

同じイメージから複数起動

32
12
コンテナ入門 - Docker

Dockerfile とは

イメージの作り方を1行ずつ書いた、テキストの設計図です。

Dockerfile

どのベースをもとに、何をインストールし、どう起動するかを順番に書いたテキストファイル。これをもとにイメージが作られる。

イメージの作り方を記述

土台と手順を順番に書く

誰が作っても同じ結果になる

設計図を共有すれば再現できる

33
13
コンテナ入門 - Docker

自分の環境では動く問題を解決

必要なものを箱ごと持ち運ぶので、環境の違いによる不具合が起きにくくなります。

環境ごと梱包
  • 必要物を箱に同梱
  • 差が出にくい
同じ箱を共有
  • 全員が同じ環境
  • ずれが起きない
持ち運べる
  • どこでも同じ動作
  • 移動が簡単
34
14

コンテナ入門 - 活用

4

第4部 コマンドと活用

基本のdockerコマンド

40
15
コンテナ入門 - 活用

基本のdockerコマンド

イメージの取得からコンテナの起動・確認まで、よく使うコマンドを並べます。

bash
# イメージを取得する
docker pull nginx:latest

# コンテナを起動する
docker run -d -p 8080:80 nginx:latest

# 動いているコンテナを一覧表示
docker ps

# コンテナを停止する
docker stop <コンテナID>
41
16
コンテナ入門 - 活用

Dockerfile の例

土台を決め、必要なファイルを入れ、起動コマンドを書く、というシンプルな構成です。

docker
# 土台となるイメージを指定
FROM node:20

# 作業ディレクトリを作る
WORKDIR /app

# ファイルをコピーする
COPY . .

# 起動時に実行するコマンド
CMD ["node", "index.js"]
42
17
コンテナ入門 - 活用

アプリを箱にして動かす流れ

設計図を書いてから、実際にコンテナが動くまでの一連の手順です。

Dockerfileに作り方を書く
docker build でイメージを作る
docker run でコンテナを起動する
docker ps で動作を確認する
43
18
コンテナ入門 - まとめ
クイズ

振り返りクイズ

今日の内容を確認しましょう。

コンテナが仮想マシンより軽い主な理由として最も適切なものはどれ?

A
通信を暗号化しているから
B
OSの中核を共有しアプリ部分だけを箱に入れるから
C
CPUを使わないから
D
設計図を持たないから
50
19
コンテナ入門 - まとめ
答え

振り返りクイズ 解答

コンテナが仮想マシンより軽い主な理由として最も適切なものはどれ?

A
通信を暗号化しているから
B
OSの中核を共有しアプリ部分だけを箱に入れるから
C
CPUを使わないから
D
設計図を持たないから

コンテナは各自で完全なOSを持たず、ホストのOSの中核を共有してアプリ部分だけを梱包します。そのぶん軽くて起動も速いのが特徴です。

51
20
コンテナ入門 - まとめ

質疑・次回予告

今日のまとめと、次に学ぶテーマです。質問があればここで受け付けます。

今日のおさらい
  • コンテナはOSを共有する軽い箱
  • 設計図からイメージ、イメージからコンテナ
  • 環境差の問題を解決できる
次回予告
  • ストレージの種類 〜データの置き場所〜
  • データをどこに保存するかを学ぶ
52
21
"

コンテナはアプリを軽い箱に詰めて、どこでも同じように動かす技術。Dockerが設計図からイメージを作り、コンテナを起動します。これで自分の環境では動く問題ともお別れです。

コンテナ入門

53
22