LOGv:20171214

Docker基礎知識

イメージ図

dockerイメージとdockerコンテナ

┌────────────────────┐
│   コンテナ                             │
│  ┌────────────────┐  │
│  │   コンテナ用レイヤ             │  │
│  ├────────────────┤  │
│  │   ...                          │  │
│  ├────────────────┤  │
│  │   コンテナ用レイヤ             │  │
│  ├────────────────┤  │
│  │   ベースイメージ (ReadOnly)    │  │
│  │  ┌────────────┐  │  │
│  │  │ イメージレイヤ         │  │  │
│  │  ├────────────┤  │  │
│  │  │ ...                    │  │  │
│  │  ├────────────┤  │  │
│  │  │ イメージレイヤ         │  │  │
│  │  └────────────┘  │  │
│  └────────────────┘  │
└────────────────────┘
  • ベースイメージは読み込み専用
  • イメージとはプロセスを実行するためのファイルの集合体
  • コンテナ用レイヤは読み書き可能

docker runコマンドを実行するとベースイメージを基にコンテナが作成される。
そこで実行されたコマンドはコンテナ用レイヤに記録される。

サービス

┌───────────────┐
│  サービス                    │
│ ┌─────┐┌─────┐ │
│ │ コンテナ ││ コンテナ │ │
│ └─────┘└─────┘ │
└───────────────┘

コマンドフロー

( docker clinet )
    │
    ↓
[ dockers command ]
    │
    │                       ┌→ [ command ] ─→ ( docler container )
    ↓                       │
( docker engine / daemon ) ─┴→ [ command ] ─→ ( docler container )

Docker コマンド

buildとcommitの違い

docker build
Dockerfileを基にdockerイメージを作成する
docker commit
変更を加えられたコンテナを基にdockerイメージを作成する

Dockerfile

RUNとCMDの違い

RUN
イメージのビルド時に実行される
CMD
コンテナ実行時(作成時)に実行される。
※ dockerファイル内に1つだけ

ADDとCOPYの違い

ADD
コピー後、圧縮ファイルなどであれば展開する
COPY
コピーするだけ
補足
ADD/COPYいずれもオプションで–chownオプションでファイルオーナーを変更できる。

ARGとENVの違い

ARG
イメージのビルド時の引数
ENV
環境変数

open close