Docker

開発ツール | IT用語集

この用語をシェア

概要

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の代替コンテナエンジン

関連リンク

この用語についてもっと詳しく

Dockerに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。