クラウド コンピューティングとコンテナ化テクノロジの発展により、コンテナ化は最新のアプリケーション開発と展開の主流の方法になりました。最も人気のあるコンテナ化エンジンである Docker は、アプリケーションの開発、テスト、デプロイのための環境を提供します。
ただし、Docker は便利なコンテナ化ソリューションを提供しますが、実際に Docker を使用すると問題が発生することがよくあります。そのうちの 1 つは、キャッシュをクリアするときの問題です。この記事では、Docker でキャッシュをクリアできない理由とその修正方法について説明します。
Docker は、コンテナーを作成するときにベースとしてイメージを使用し、コンテナーが必要なサービスとアプリケーションを開始できるようにします。 Docker イメージは複数のレイヤーで構成されており、各レイヤーには Dockerfile で定義されたファイルとコマンドが含まれています。新しいイメージを構築するとき、各レイヤーは Docker エンジンにローカルにキャッシュされます。
キャッシュされた古いイメージを使用して新しいイメージをビルドする場合、Docker エンジンはファイルの最新バージョンを使用する代わりに、キャッシュ内の古いバージョンを使用することがあります。これにより、アプリケーションでビルド エラーや奇妙な動作が発生する可能性があります。
デフォルトでは、Docker エンジンはイメージの構築を高速化するためにキャッシュを使用しようとします。ただし、場合によっては、キャッシュをクリアして最新のファイルを使用する必要があります。ただし、キャッシュをクリアしようとすると、キャッシュを完全にクリアできないことがよくあります。
これは、Docker エンジンには、Docker デーモン、Docker イメージ、Docker コンテナー、Docker ネットワークなどの複数のコンポーネントがあるためです。 Docker は、未使用のオブジェクト リソースをクリーンアップするための docker system prune
などのいくつかのコマンドを提供しますが、作成されたもののローカルにキャッシュされたままの未使用のイメージ (「ダングリング」イメージ) をクリアすることはできません。
これらのキャッシュ イメージは使用されなくなりましたが、クリアされません。これにより、特にイメージが実行時に構築される場合、大量のローカル ストレージが占有される可能性があります。
Docker エンジンにはいくつかのクリーンアップ コマンドが用意されていますが、歴史的な理由と設計上の制限により、キャッシュされたイメージをすべて完全にクリアすることは不可能です。 。この場合、追加のツールとテクニックを使用する必要があります。
以下は、Docker キャッシュをクリアできない問題を解決するためのいくつかの方法です:
# 安装 Docker-cleanup 工具 wget https://gist.github.com/wdullaer/f1af16bd7e970389bad3/raw \ -O /usr/local/bin/docker-cleanup && chmod +x /usr/local/bin/docker-cleanup # 执行清理命令,清除所有未使用的 Docker 资源 docker-cleanup
2. Docker の公式クリーンアップ スクリプトを使用する
# 下载 Docker 清理脚本 curl -fsSL https://raw.githubusercontent.com/docker/docker-ce/17.12.0-ce/components/cli/contrib/clean.sh \ -o /usr/local/bin/docker-clean && chmod +x /usr/local/bin/docker-clean # 执行清理命令,清除所有未使用的 Docker 资源 docker-clean
3. Docker キャッシュを手動でクリアします
Docker キャッシュを手動でクリアする手順は次のとおりです:
実行中のコンテナをすべて停止します。
# 停止所有运行中的容器 docker stop $(docker ps -q) # 列出所有本地镜像 docker images -a # 删除未使用的镜像 docker rmi $(docker images -f "dangling=true" -q) # 清理系统所有未使用的资源 docker system prune -a
Docker キャッシュをクリーンアップするときは注意して操作する必要があることに注意してください。使用中の一部のリソースを誤って削除すると、アプリケーションに問題が発生する可能性があります。したがって、何かをする前に重要なデータをバックアップすることをお勧めします。
以上がdockerがキャッシュをクリアできない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。