Dockerコンテナの仕組みと実践入門|Linuxのcgroups・namespaceからDockerfileまで

現場実践|Dockerコンテナ基礎
Dockerコンテナの仕組みと実践入門|Linuxのcgroups・namespaceからDockerfileまで
「Dockerって何?仮想マシンと何が違うの?」——Linuxのcgroups・namespaceによるコンテナの仕組みから、Dockerfile・docker-composeの実践的な使い方まで解説します。
💡 DockerはLinuxの「cgroups(リソース制限)」と「namespace(分離)」を使ったコンテナ技術。仮想マシンよりも軽量・高速で、「一度作ればどこでも動く」ポータビリティが最大の強みです。
1. コンテナとVMの違い
| 仮想マシン(VM) | コンテナ(Docker) | |
|---|---|---|
| 起動時間 | 数分 | 数秒 |
| サイズ | GBクラス(OSを含む) | MBクラス(OSカーネルを共有) |
| ポータビリティ | ハイパーバイザー依存 | DockerさえあればどこでもOK |
| プロセスの分離 | 完全分離 | Linuxのnamespaceで分離(カーネルは共有) |
2. 基本的なDockerコマンド
# イメージを取得して起動
docker pull nginx
docker run -d -p 8080:80 --name mynginx nginx
# コンテナの確認・停止・削除
docker ps
docker stop mynginx
docker rm mynginx
# コンテナ内でコマンドを実行
docker exec -it mynginx bash
# ログを確認
docker logs mynginx -f3. Dockerfileの書き方
# Node.jsアプリのDockerfile例
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]ベースイメージは軽量な「alpine」を選ぶことでイメージサイズを小さくできます。RUNは1行にまとめることでレイヤー数を減らしイメージを軽量化できます。
4. docker-composeで複数コンテナを管理
version: "3.8"
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:📌 この記事のポイント
- コンテナはLinuxのcgroups(リソース制限)とnamespace(分離)を使ってVMより軽量・高速を実現する
- docker run・ps・exec・logsの4コマンドが日常的に最もよく使うDockerコマンド
- Dockerfileはalpineベースイメージ+RUNの最小化でイメージを軽量化する
キャリアの疑問、一緒に解決しませんか?
Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




