Docker入門:コンテナ型仮想環境の基本
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との連携、コンテナオーケストレーション等