イメージ管理
イメージの検索
Docker Hubでイメージを検索します。
# Docker Hubでイメージを検索
docker search nginx
docker search mysql
# 公式イメージのみ表示
docker search --filter "is-official=true" nginx
# 星数が一定以上のものを検索
docker search --filter "stars=100" nginx イメージの取得(Pull)
レジストリからイメージをダウンロードします。
# 最新版を取得(latestタグ)
docker pull nginx
docker pull ubuntu
# 特定バージョンを取得
docker pull nginx:1.25
docker pull mysql:8.0
docker pull node:18-alpine
# 特定のレジストリから取得
docker pull ghcr.io/user/repo:tag ✓ 本番環境では必ずタグを明示的に指定しましょう
✗ latestタグは不安定な場合があるため注意が必要です
イメージの一覧表示
# ローカルのイメージ一覧
docker images
docker image ls
# イメージIDのみ表示
docker images -q
# 中間イメージも含めて表示
docker images -a
# タグなしイメージのみ表示
docker images -f "dangling=true" イメージ詳細情報の確認
# イメージの詳細情報をJSON形式で表示
docker inspect nginx
docker inspect イメージID
# 特定の情報だけを取得
docker inspect --format='{{.Config.Env}}' nginx
docker inspect --format='{{.Architecture}}' nginx
# イメージの履歴を確認
docker history nginx
docker history --no-trunc nginx イメージの削除
# イメージを名前で削除
docker rmi nginx
docker image rm nginx:1.25
# イメージIDで削除
docker rmi イメージID
# 複数イメージを一度に削除
docker rmi nginx mysql redis
# 強制削除(コンテナが使用中でも)
docker rmi -f nginx
# 未使用イメージを全て削除
docker image prune
# タグなしイメージも含めて削除
docker image prune -a
# 確認なしで実行
docker image prune -f イメージのビルド
Dockerfileからイメージを作成します。
# カレントディレクトリのDockerfileからビルド
docker build .
# タグを付けてビルド
docker build -t my-app:1.0 .
docker build -t myname/my-app:latest .
# Dockerfileを指定してビルド
docker build -f Dockerfile.prod -t my-app:prod .
# キャッシュを使わずにビルド
docker build --no-cache -t my-app .
# ビルド引数を渡す
docker build --build-arg NODE_VERSION=18 -t my-app .
# ビルドコンテキストを指定
docker build -t my-app ./src Dockerfileの基本
# ベースイメージの指定
FROM node:18-alpine
# 作業ディレクトリの設定
WORKDIR /app
# ファイルのコピー
COPY package*.json ./
# コマンドの実行
RUN npm install
# アプリコードをコピー
COPY . .
# ポートの公開
EXPOSE 3000
# コンテナ起動時のコマンド
CMD ["npm", "start"] イメージのタグ付け
# 既存イメージに新しいタグを付ける
docker tag my-app:1.0 my-app:latest
docker tag my-app myname/my-app:1.0
# レジストリ用のタグ付け
docker tag my-app:1.0 registry.example.com/my-app:1.0
docker tag my-app ghcr.io/username/my-app:latest イメージのプッシュ(Push)
# Docker Hubにプッシュ
docker push myname/my-app:1.0
docker push myname/my-app:latest
# プライベートレジストリにプッシュ
docker push registry.example.com/my-app:1.0
# GitHub Container Registryにプッシュ
docker push ghcr.io/username/my-app:latest ※ プッシュ前にdocker loginで認証が必要です
イメージの保存と読込
イメージをファイルとして保存したり、読み込んだりできます。
# イメージをtarファイルに保存
docker save -o nginx.tar nginx
docker save nginx > nginx.tar
# 複数イメージを一つのファイルに保存
docker save -o images.tar nginx mysql redis
# tarファイルからイメージを読み込む
docker load -i nginx.tar
docker load < nginx.tar
# コンテナをイメージに変換(export/import)
docker export コンテナ名 > container.tar
docker import container.tar my-image:1.0 ✓ save/loadはイメージの履歴を保持します
✗ export/importは履歴が失われます
イメージのサイズ確認
# イメージのサイズを確認
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# 特定イメージのレイヤーサイズを確認
docker history nginx
# ディスク使用状況を確認
docker system df
docker system df -v