🐳
【Docker入門】 イメージ管理
はじめに
この投稿では、Dockerにおける「イメージ管理」について、基本から応用まで体系的に解説します。
docker image
コマンドの基本操作に加え、プライベートレジストリの構築・活用方法や保存・復元・クリーンアップのテクニックまでを、実践例とともに紹介します。
Dockerのイメージ管理は、開発・テスト・運用の全ステージで重要な役割を果たすため、確実に理解しておきたい分野です。
pull
)
1. Docker イメージの取得(Docker イメージは Docker Hub をはじめとするさまざまなレジストリから取得可能です。
docker pull debian
docker pull library/debian:10
docker pull docker.io/library/debian:10
docker pull gcr.io/google-samples/hello-app:1.0
📌 解説
-
docker.io
はデフォルトレジストリ(省略可) -
gcr.io
は Google Container Registry の一例 - イメージ名:タグ名 形式でバージョン指定可能
- 特定のバージョンを使用することで、環境の再現性が高まります
inspect
)
2. イメージの詳細確認(Docker イメージの内部情報(メタデータ)を確認できます。
docker image inspect httpd:2.4
出力の一部例:
{
"RepoTags": ["httpd:2.4"],
"ContainerConfig": {
"ExposedPorts": {"80/tcp": {}}
},
"Os": "linux"
}
--format
オプション
よく使う docker image inspect --format="{{.Os}}" httpd:2.4
docker image inspect --format="{{.RepoTags}}" httpd:2.4
docker image inspect --format="{{.ContainerConfig.ExposedPorts}}" httpd:2.4
- Goテンプレート構文で特定情報だけ抽出可能
- スクリプト自動化にも活用できます
history
)
3. イメージの履歴確認(どのような命令でイメージが構築されたかを確認します。
docker image history httpd:2.4
IMAGE ID | COMMAND | SIZE |
---|---|---|
d16761… | CMD ["httpd-foreground"] | 0B |
<none> | EXPOSE 80 | 0B |
<none> | COPY file:xxx... | 138B |
<none> | ENV HTTPD_VERSION=2.4.57 | 0B |
-
Dockerfile
のレイヤーごとの履歴を可視化 - セキュリティ監査やキャッシュ最適化に役立ちます
save
/ load
)
4. イメージの保存と復元(🔸 イメージの保存(エクスポート)
docker image save phpserver:1.0 > phpserver1.tar
docker image save phpserver:1.0 | gzip > phpserver1.tar.gz
-
.tar
ファイルとしてイメージを保存 - チーム内での共有や、外部ストレージへのバックアップに便利
🔸 リモート転送(例)
scp phpserver1.tar.gz kevin@host:/home/kevin/backup/
🔸 イメージの復元(インポート)
docker image load < phpserver1.tar.gz
5. Docker HubへのログインとPush
🔐 認証とログイン
docker login
トークン使用の場合:
cat .access_token | docker login --username <username> --password-stdin
📤 イメージのタグ付けとPush
docker image tag myweb:v1.0 <username>/myweb:v1.0
docker push <username>/myweb:v1.0
- タグに Docker Hub のユーザー名を含める必要あり
- プッシュ前にパブリック/プライベート設定も確認しましょう
6. プライベートレジストリの構築と運用
🏗️ 起動
docker run -d \
-v /home/kevin/registry_data:/var/lib/registry \
-p 5000:5000 \
--restart=always \
--name=local-registry \
registry
⚠️ insecure registry 対応(HTTPS未対応の場合)
# /etc/docker/daemon.json
{
"insecure-registries": ["192.168.56.101:5000"]
}
sudo systemctl restart docker
📤 プッシュと確認
docker tag myweb:v1.0 192.168.56.101:5000/myweb:v1.0
docker push 192.168.56.101:5000/myweb:v1.0
# イメージ確認
curl http://192.168.56.101:5000/v2/_catalog
curl http://192.168.56.101:5000/v2/myweb/tags/list
rmi
)
7. イメージの削除とクリーンアップ(一括削除例:
docker rmi $(docker images -q) # 全削除
docker rmi $(docker images | grep debian) # debian関連のみ
docker rmi $(docker images | grep -v centos) # centos以外を削除
利用中のイメージ削除エラーへの対応
docker ps -a # 実行中コンテナ確認
docker stop <CONTAINER_ID> # 停止
docker rm <CONTAINER_ID> # コンテナ削除
docker rmi <IMAGE_NAME> # イメージ削除
🧰 aliasで作業効率化
# .bashrcや.zshrcに追記
alias cexrm='docker rm $(docker ps --filter "status=exited" -a -q)'
source ~/.bashrc
まとめ
Dockerイメージ管理は、単なる操作だけでなく、CI/CD・本番運用・バックアップ戦略・セキュリティに密接に関わる重要な分野です。
以下のスキルは、日々のDevOps運用で役立ちます:
- イメージの取得・調査・タグ付け
- 保存・復元によるバックアップ設計
- プライベートレジストリによる社内アプリの効率的な配布
- イメージのライフサイクル管理(クリーンアップ・共有)
Discussion