Dockerにおけるイメージ、コンテナ、リポジトリの関係

1. イメージの種類とコンテナ管理

Dockerイメージは以下の2種類に分類されます:

  • 基本システムイメージ(ベースイメージとして使用)
  • サービスレベルのイメージ(コンテナサービスを直接起動可能)

基本イメージの取得方法

# 公式リポジトリからCentOSイメージを取得
docker import http://example.com/centos7.tar.gz centos:7.0

# Ubuntuイメージのインポート
docker import ./ubuntu-18.04.tar.gz ubuntu:18.04

サービスイメージの操作

# Nginxイメージの取得
docker pull nginx:1.15

# イメージの構成履歴を確認
docker history nginx:1.15

2. イメージとコンテナの関係

コンテナはイメージの上に読み書き可能なレイヤーを追加して動作します。ファイル変更時には、イメージからコンテナのファイルシステムへコピーが行われます。コンテナ削除時にはこの書き込みレイヤーも消去されます。

複数のコンテナが同一イメージを共有しても、書き込み操作は各コンテナの独立したレイヤーで行われるため、元のイメージファイルは変更されません。この設計によりディスク利用効率が向上します。

変更を永続化する場合は、docker commitコマンドで新規イメージを作成できます。

3. イメージリポジトリの概要

Dockerリポジトリはイメージの集中管理場所であり、ストレージと配布サービスを提供します。各リポジトリは複数のタグ(バージョン)を持つことができ、リポジトリ名:タグ形式で特定バージョンを指定します。タグ未指定時はlatestがデフォルトとなります。

リポジトリの種類:

  • パブリックリポジトリ(例:Docker Hub)
  • プライベートリポジトリ(例:ローカルRegistry、VMware Harbor)

イメージのアップロードと取得:

# リポジトリへのイメージプッシュ
docker push my-registry.example.com/my-image:1.0

# リポジトリからのイメージ取得
docker pull my-registry.example.com/my-image:1.0

4. プライベートレジストリの構築

プライベートレジストリの利点:

  • ネットワーク帯域の効率化
  • 社内統合管理の容易化
  • CI/CDパイプラインとの連携

公式Registryイメージを使用した構築手順:

# Registryイメージの取得
docker pull registry:2

# コンテナの起動
docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name private-registry \
  registry:2

# 自動再起動ポリシーの確認
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' private-registry

タグ: Dockerイメージ コンテナ レジストリ プライベートリポジトリ VMware Harbor

5月30日 20:49 投稿