hamakyo.log
open main menu

Docker入門:コンテナ型仮想環境の基本

/ 4 min read
last update date:

Docker入門:コンテナ型仮想環境の基本

Dockerとは何か

Dockerは、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームだ。従来の仮想マシンとは異なり、ホストOSのカーネルを直接利用することで、軽量で高速な仮想環境を構築できる。

Dockerを使う理由

環境の統一

どのコンピューター上でも全く同じ環境を作り出せる。「俺の環境では動くんだけど…」という問題を根本的に解決する。

運用の効率化

再利用やバージョン管理、配布が容易になる。開発環境から本番環境まで、一貫した環境管理が可能だ。

クラウド連携

クラウド上にサーバーを自動構築できる。スケールアウトやCI/CDパイプラインとの組み合わせで威力を発揮する。

コミュニティの活用

Docker Hubで一般公開されているコンテナイメージを利用できる。PostgreSQL、Redis、Nginxなど、よく使われるミドルウェアは公式イメージが提供されている。

基本的なコマンド

イメージの管理

# イメージのダウンロード
docker pull nginx:latest

# イメージ一覧の表示
docker images

# イメージの削除
docker rmi nginx:latest

コンテナの操作

# コンテナの作成と起動
docker run -d -p 8080:80 nginx

# 起動中のコンテナ確認
docker ps

# 全コンテナの確認(停止中も含む)
docker ps -a

# コンテナの停止
docker stop container_id

# コンテナの削除
docker rm container_id

Dockerfileによる自作イメージ

基本的なDockerfile構成

# ベースイメージの指定
FROM node:18-alpine

# 作業ディレクトリの設定
WORKDIR /app

# 依存関係のコピーとインストール
COPY package*.json ./
RUN npm install

# アプリケーションコードのコピー
COPY . .

# ポートの公開
EXPOSE 3000

# 起動コマンド
CMD ["npm", "start"]

イメージのビルドと実行

# イメージのビルド
docker build -t my-app:1.0 .

# 作成したイメージからコンテナを起動
docker run -d -p 3000:3000 my-app:1.0

実際の開発での活用例

開発環境の統一

チーム全員が同じDockerfile、docker-compose.ymlを使用することで、OSの違いやローカル環境の差異を吸収できる。

マイクロサービスのローカル実行

複数のサービスをdocker-composeで一括管理し、本番環境に近い状態でローカル開発を行える。

CI/CDパイプラインでの活用

GitHubActionsやJenkinsなどでDockerイメージをビルドし、テストから本番デプロイまで一貫した環境で実行できる。

注意点とベストプラクティス

セキュリティ

  • 本番環境では信頼できるベースイメージを使用する
  • 不要なパッケージは含めない
  • 定期的なイメージの更新を行う

パフォーマンス

  • .dockerignoreを適切に設定してビルド時間を短縮
  • マルチステージビルドで本番イメージのサイズを最小化
  • レイヤーキャッシュを意識したDockerfileの書き方

運用面

  • コンテナのログ管理
  • データの永続化にはボリュームを使用
  • リソース制限の設定

次のステップ

Docker Composeを使った複数コンテナの管理、Kubernetesとの連携、コンテナオーケストレーション等