3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔐【Docker】DOCKER_CONTENT_TRUST とは?

Posted at

✅ はじめに

Docker でイメージの push/pull を行う際、以下のようなエラーに遭遇したことはありませんか?

Error: remote trust data does not exist for docker image

こんな時、よく見かける解決法として
export DOCKER_CONTENT_TRUST=0 を実行すると解決したりします。

ですが・・・

「この環境変数、何をしてるの?」
「無効化して大丈夫?」
「安全性はどうなの?」

と疑問を持った方も多いのではないでしょうか。

Docker における Content Trust(DCT) の概要と、
それを制御する環境変数 DOCKER_CONTENT_TRUST
仕組み・使い方・注意点について詳しく解説します。

🧠 DOCKER_CONTENT_TRUST とは?

DOCKER_CONTENT_TRUST(以下DCT)は、
Docker におけるイメージの「信頼性の保証(署名)」を有効・無効にする環境変数です。

Docker は Notary という仕組みを利用して、
イメージに署名をつけて 真正性(本物であること)や改ざん防止 を保証します。

設定値 挙動の意味
DOCKER_CONTENT_TRUST=1(デフォルト) pull/push 時に署名を必須にする(安全だが厳密)
DOCKER_CONTENT_TRUST=0 署名なしでも pull/push 可能(柔軟だが検証なし)

📦 署名が求められるシチュエーション

公開レジストリ(Docker Hub など)で、
署名が必要なイメージに対して pull しようとした場合を例に取ります。

署名付きで push しようとしたが、Notary にメタデータが存在しない場合
DCTが有効であれば、エラーになります。

🛠 実例:DOCKER_CONTENT_TRUST=0 を使った回避

例えばECR にコンテナイメージを push する場合、
署名不要で push したいケースがあります。

export DOCKER_CONTENT_TRUST=0
docker build -t my-ecr-repo:latest .
docker push my-ecr-repo:latest

CI/CD や開発環境などでは、
毎回署名を付けずに push したい場合に有効です!

⚠️ セキュリティ上の注意点

DOCKER_CONTENT_TRUST=0 を使うことで、
署名チェックが完全に無効化されるため、以下のリスクがあります。

リスク 内容
改ざんの検知不可 pull したイメージが改ざんされていても検出できない
なりすましや供給元の不明確 誰が作成したイメージか確認できない
セキュリティポリシー違反 企業によっては署名必須のポリシーがあることも

✅ ベストプラクティス

シーン 推奨設定
本番環境の pull DOCKER_CONTENT_TRUST=1 を使用
ローカル開発・CI/CD DOCKER_CONTENT_TRUST=0 を一時的に使用

👩‍💻 CI/CD での利用例(GitHub Actions)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Build and Push Docker Image without signing
        run: |
          export DOCKER_CONTENT_TRUST=0
          docker build -t ${{ secrets.ECR_URI }}:latest .
          docker push ${{ secrets.ECR_URI }}:latest

📝 まとめ

  • DOCKER_CONTENT_TRUST は Docker の署名チェックを有効/無効にする環境変数
  • 「=0」 にすると柔軟に push/pull できるが、セキュリティチェックを無効化するため注意
  • 開発環境や CI/CD では有効だが、本番では署名チェックを有効にすべき

📚 参考リンク

  • Docker公式ドキュメント - Content Trust
  • Notary GitHub

🙌 最後に

「エラーが出たから仕方なく export DOCKER_CONTENT_TRUST=0 を書いてる…」という方に、
その意味とリスク、適切な使い方が伝われば嬉しいです!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?