8.1 Dockerにおけるタグ付け
Dockerにおけるタグ付けは、イメージにラベルを付けるプロセスで、バージョン管理を簡単にします。これにより、アプリケーションのデプロイと更新がより便利で管理しやすくなります。このレクチャーでは、タグとは何か、どう使うのか、そして効率的に作業するためのおすすめポイントを詳しく説明していきます。
Dockerのタグ (tag) は、特定のイメージバージョンを識別するためのラベルです。タグを使用することで変更を追跡しやすくなり、開発、テスト、本番環境など、さまざまな環境に適したバージョンを選ぶのに役立ちます。
タグの基本的なコンセプト:
- 一意性: タグは特定のイメージバージョンを明確に識別します。
- バージョニング: タグを使用してイメージのバージョンを示します。例えば、v1.0, v2.0, latestなど。
- 柔軟性: タグは特定の開発フェーズに対応するイメージを作成するために使用されます。例えば、
beta
,stable
,prod
など。
8.2 タグの使い方
1. イメージをビルドするときにタグを割り当てる
パラメータ-t
を使ってdocker build
コマンドでイメージにタグを割り当てることができるよ。
例:
この例では、イメージに名前myapp
とタグ1.0を割り当てているよ。
docker build -t myapp:1.0 .
2. 既存のイメージに追加のタグを割り当てる
すでに存在するイメージにタグを追加するには、docker tag
コマンドを使えばいいよ。
例:
この例ではmyapp:1.0
に追加のタグlatest
を割り当てているよ。
docker tag myapp:1.0 myapp:latest
3. コンテナを起動するときにタグを使う
コンテナを起動するとき、使用したいイメージの特定のタグを指定できるよ。
例:
この例では、タグ1.0
のイメージmyapp
を基にコンテナを起動しているよ。
docker run -d myapp:1.0
8.3 タグ付けの実践
セマンティックバージョニングの使用
セマンティックバージョニング (Semantic Versioning) は、イメージの変更レベルを理解しやすくする標準的なバージョン付けのプラクティスだよ。
セマンティックバージョニングのフォーマット:
<major>.<minor>.<patch>
それぞれの意味:
-
major
: 主要な変更で、以前のバージョンと互換性がない場合。 -
minor
: 以前のバージョンと互換性がある新機能。 -
patch
: バグ修正やその他の小さい変更。
例:
docker build -t myapp:2.1.3 .
追加ラベルの使用
追加ラベルは、イメージの状態を示すのに役立つよ。例えば beta
, alpha
, stable
, prod
などだね。
例:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
タグの更新
イメージを更新する際は、変更を追跡しやすくするためにタグを変更するのが推奨されるよ。タグ latest
は、最新バージョンのイメージを示すためによく使われるんだ。
例:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 タグの使用例
いろんな環境でのタグ使用例:
例 1: 開発
開発用には、現在のバージョンや開発状況を表すタグ、例えばdev
を持つイメージをよく使うよ。
docker build -t myapp:dev .
docker run -d myapp:dev
例 2: テスト
テスト環境では、betaのような特定のバージョンや状態を表すタグ付きのイメージを使うよ。
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
例 3: 本番環境
本番環境では、安定していて確認済みのバージョンを使うことが大事だよ。例えばstable
やprod
、あるいは1.1.0-stable
みたいなセマンティックバージョンがタグとして指定されているものを使おうね。
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 ベストプラクティス
1. 常にセマンティックバージョニングを使う
すべてのイメージでセマンティックバージョニングを守ろう。これで、変更のレベルを明確に区別しやすくなり、バージョン管理が楽になるよ。
2. 分かりやすく意味のあるタグを使おう
イメージの状態や目的をはっきり示すタグを使おう(例:beta
, stable
, prod
)。
3. productionでlatestを使わない
latest
タグは開発やテストには便利だけど、productionでは具体的なバージョンを使ったほうが予期しない変更を防げるよ。
4. タグの使い方をドキュメント化する
プロジェクトでタグをどう使うかをドキュメント化しよう。これでチームがバージョニングプロセスをより理解しやすくなって、ミスのリスクも減るんだ。
タグを使ったDockerfileの例
例1: 作成とタグ付け
# バージョン1.0.0用Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
ビルドとタグ付けのコマンド
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
例2: イメージの更新とタグ付け
# 新機能付きバージョン1.1.0用Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
ビルドとタグ付けのコマンド
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION