この用語をシェア
概要
Dockerは、コンテナ技術を使用したアプリケーション実行環境の仮想化ツールです。アプリケーションとその依存関係を軽量で可搬性の高いコンテナにパッケージ化し、どこでも同じ環境で実行できるようにします。
基本概念
- コンテナ: アプリケーションと依存関係を含む軽量な実行環境
- イメージ: コンテナの雛形となるテンプレート
- Dockerfile: イメージを構築するための設定ファイル
- レジストリ: イメージを保存・共有する場所(Docker Hub等)
基本的なDockerコマンド
# イメージの操作
docker images # イメージ一覧
docker pull nginx # イメージをダウンロード
docker build -t myapp . # Dockerfileからイメージを構築
# コンテナの操作
docker run -p 8080:80 nginx # コンテナを実行
docker ps # 実行中のコンテナ一覧
docker stop コンテナID # コンテナを停止
docker rm コンテナID # コンテナを削除
# 便利なコマンド
docker exec -it コンテナID bash # コンテナ内でbashを実行
docker logs コンテナID # コンテナのログを表示
Dockerfileの例
# Node.js アプリケーション
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Docker Composeの例
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- NODE_ENV=production
db:
image: postgres:13
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
メリット
- 環境の一貫性: 開発、テスト、本番環境で同じ実行環境
- 軽量性: 仮想マシンより軽量で高速
- 可搬性: どこでも同じように動作
- スケーラビリティ: 必要に応じて簡単にスケールアウト
- 効率的なリソース利用: ホストOSのリソースを効率的に使用
関連技術
- Kubernetes: コンテナオーケストレーション
- Docker Compose: 複数コンテナの管理
- Docker Swarm: Dockerネイティブのクラスタリング
- Podman: Dockerの代替コンテナエンジン