6-4 Docker の利用
学習目標
この章では、学習者がDockerコンテナ化技術を、基本概念から実際のアプリケーションまで、深く理解できるよう設計されています。Dockerのコアコンセプト、基本的なワークフロー、そして高度な使用テクニックを段階的に習得していきます。最終的には、コンテナ化が開発環境のセットアップを簡素化し、アプリケーションのデプロイ効率を向上させる方法、そしてこの知識を実際のプロジェクトにどのように応用できるかを理解できるようになります。これらのスキルは、現代の開発およびDevOpsワークフローにおいて不可欠であり、プロフェッショナルとしての競争力を大きく高めます。
基本概念
Dockerは、開発者がアプリケーションとその依存関係をポータブルなコンテナにパッケージ化できるオープンソースのコンテナ化プラットフォームです。「一度構築すれば、どこでも実行できる」という原則を実現します。
Basic Concepts
1. コンテナ:軽量で実行可能なスタンドアロンのソフトウェアパッケージ
2. イメージ:コンテナを作成するために使用されるテンプレート
3. Dockerfile:Dockerイメージを構築するためのスクリプトファイル
4. リポジトリ:Dockerイメージを保存および配布するためのサービス
よく使用されるコマンド
# Pull an image
docker pull [image_name]
# Run a container
docker run [options] [image_name]
# List running containers
docker ps
# List all containers
docker ps -a
# Stop a container
docker stop [container_id]
# Remove a container
docker rm [container_id]
Dockerfileの例
# Project structure:
# cpp-docker-demo/
# ├─ Dockerfile
# └─ main.cpp
#
# main.cpp:
# #include
#
# int main() {
# std::cout << "Hello, Docker with C++!" << std::endl;
# return 0;
# }
#
# Build the Docker image in the project directory:
# $ docker build -t myapp .
# -t myapp : Name the image
# . : Use the Dockerfile in the current directory
# Use Ubuntu 22.04 as the base image
FROM ubuntu:22.04
# Disable interactive prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
# Update package lists and install C++ build tools
RUN apt-get update && \
apt-get install -y g++ make && \
rm -rf /var/lib/apt/lists/*
# Set the working directory inside the container
WORKDIR /app
# Copy the C++ source file into the container
COPY main.cpp .
# Compile the C++ source code
RUN g++ -O2 -std=c++17 main.cpp -o app
# Run the compiled application when the container starts
CMD ["./app"]


コマンドの説明
1. docker build
Dockerfileからイメージをビルドするために使用します。
例:
docker build -t myapp:latest .

2. docker run
コンテナを実行するために使用します。
例:
docker run -p 3000:3000 myapp:latest

3. docker exec
実行中のコンテナ内でコマンドを実行するために使用します。
例:
docker exec -it [container_id] bash
ベストプラクティス
1. 公式ベースイメージを使用する
2. 不要なファイルを削除してイメージサイズを最適化する
3. .dockerignore を使用して不要なファイルを除外する
4. 環境変数を適切に設定する
5. ヘルスチェックを実装する
よくあるトラブルシューティング
1. コンテナの起動に失敗する
- ポートが既に使用されていないか確認してください
- コンテナのログを確認してください
- 環境変数の設定を確認してください
2. イメージのビルドに失敗する
- Dockerfileの構文を確認してください
- ネットワーク接続を確認してください
- 十分なディスク容量があることを確認してください
セキュリティに関する推奨事項
1. Dockerとベースイメージを定期的に更新する
2. コンテナのリソース使用量を制限する
3. コンテナをroot以外のユーザーで実行する
4. ネットワーク分離戦略を実装する
5. コンテナの脆弱性を定期的にスキャンする
上記で説明した基礎知識と実践的なガイダンスがあれば、コンテナ開発にDockerを使い始めることができるはずです。練習を続け、高度な機能を徐々に探求していきましょう。