【どっかー】

Docker とは?

💡 アプリを「コンテナ」に入れてどこでも同じように動かす
📌 このページのポイント
Docker レイヤー構造と変換フロー イメージのレイヤー構造 アプリケーション層 COPY app.js / CMD node ミドルウェア層 RUN npm install ベースイメージ層 FROM node:18-alpine 読み取り専用 ビルド・実行フロー Dockerfile 設計図(テキスト) build Image テンプレート(不変) run Container 実行中プロセス レイヤーの積み重ね ポイント 各レイヤーはキャッシュされ、変更分のみ再ビルド 1つのImageから複数のContainerを作成可能 Dockerfileからイメージをビルドし、コンテナとして実行する
Dockerはレイヤー構造のイメージからコンテナを起動する
ひよこ ひよこ

Dockerを使う理由は?

ペンギン先生 ペンギン先生

「自分のPCでは動くのにサーバーでは動かない」問題をゼロにするためだよ。Dockerfileに「Node.js 20、必要なパッケージ、起動コマンド」を書けば、チームの全員が全く同じ環境で開発できる。新メンバーも「docker compose up」1コマンドで開発環境が立ち上がるんだ

ひよこ ひよこ

Docker Composeって何?

ペンギン先生 ペンギン先生

複数のコンテナを定義して一括起動する仕組みだよ。docker-compose.ymlにWebアプリ、データベースRedisなどを定義して「docker compose up」で全部起動。「docker compose down」で全部停止。開発環境の構築が1ファイル・1コマンドになるのが革命的だね

ひよこ ひよこ

イメージのサイズを小さくするには?

ペンギン先生 ペンギン先生

①マルチステージビルド(ビルド環境と実行環境を分離)、②Alpine Linuxベースの軽量イメージを使用、③.dockerignoreでnode_modulesなど不要ファイルを除外、④レイヤーキャッシュを活用(変わりにくいRUNを上に書く)。本番用イメージは100MB以下を目指すと良いよ

ひよこ ひよこ

Dockerのセキュリティは?

ペンギン先生 ペンギン先生

rootユーザーコンテナを実行しない(USER命令で一般ユーザーを指定)、②公式イメージやVerified Publisherのイメージを使う、③Trivyなどのスキャナーでイメージの脆弱性を定期チェック、④シークレットはビルド時に埋め込まず実行時に環境変数で渡す。コンテナ=安全ではないから、セキュリティ対策は忘れずにね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Docker」って出てきたら「アプリをコンテナ化して環境差なく動かすツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Docker」 = ドッカー
💬 Dock worker(港湾労働者)が語源。コンテナ(荷物)を運ぶ「港の作業員」のイメージだよ
← 用語集にもどる