Dengan perkembangan teknologi pengkomputeran awan dan kontena, kontena telah menjadi kaedah arus perdana pembangunan dan penggunaan aplikasi moden. Docker, enjin kontena paling popular, menyediakan persekitaran untuk membangun, menguji dan menggunakan aplikasi.
Walau bagaimanapun, walaupun Docker menyediakan penyelesaian kontena yang mudah, dalam praktiknya, menggunakan Docker sering menghadapi masalah. Salah satunya ialah masalah semasa mengosongkan cache. Dalam artikel ini, kami akan meneroka sebab cache tidak boleh dikosongkan dalam Docker dan cara membetulkannya.
Docker menggunakan imej sebagai asas semasa membuat bekas supaya bekas boleh memulakan perkhidmatan dan aplikasi yang diperlukan. Imej Docker terdiri daripada berbilang lapisan, setiap satu mengandungi fail dan arahan yang ditakrifkan dalam Dockerfile. Apabila membina imej baharu, setiap lapisan dicache secara setempat dalam enjin Docker.
Apabila membina imej baharu menggunakan imej cache lama, enjin Docker mungkin menggunakan versi lama dalam cache dan bukannya menggunakan versi terkini fail. Ini boleh menyebabkan ralat binaan atau tingkah laku pelik dalam aplikasi.
Secara lalai, enjin Docker akan cuba menggunakan caching untuk mempercepatkan binaan imej. Walau bagaimanapun, dalam beberapa kes kami perlu mengosongkan cache dan menggunakan fail terkini. Walau bagaimanapun, apabila kami cuba mengosongkan cache, kami sering mendapati bahawa kami tidak boleh mengosongkan cache sepenuhnya.
Ini kerana enjin Docker mempunyai berbilang komponen, termasuk daemon Docker, imej Docker, bekas Docker dan rangkaian Docker. Walaupun Docker menyediakan beberapa arahan seperti docker system prune
untuk membersihkan sumber objek yang tidak digunakan, ia tidak boleh mengosongkan imej yang tidak digunakan (imej "berjuntai") yang telah dibuat tetapi masih dicache secara setempat.
Walaupun imej cache ini tidak lagi digunakan, ia tidak akan dikosongkan. Ini boleh mengambil banyak storan tempatan, terutamanya jika imej dibina pada masa jalan.
Walaupun enjin Docker menyediakan beberapa arahan pembersihan, atas sebab sejarah dan batasan reka bentuk, adalah tidak mungkin untuk mengosongkan sepenuhnya semua imej cache . Dalam kes ini, kita perlu menggunakan beberapa alat dan teknik tambahan.
Berikut ialah beberapa kaedah untuk menyelesaikan masalah tidak dapat mengosongkan cache Docker:
Selain arahan pembersihan yang disediakan oleh enjin Docker itu sendiri, terdapat banyak arahan pembersihan pihak ketiga Alat pihak ketiga boleh membantu kami membersihkan cache Docker. Contohnya, anda boleh menggunakan alat pembersihan Docker untuk membersihkan sumber Docker yang tidak digunakan, termasuk imej, bekas dan rangkaian yang tidak digunakan. Alat ini boleh dimuat turun dan digunakan secara percuma daripada GitHub dan merupakan alat pembersihan yang sangat mudah.
# 安装 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
Docker secara rasmi menyediakan skrip pembersihan untuk mengosongkan cache Docker dan sumber lain yang tidak digunakan. Skrip ini boleh dimuat turun dari GitHub Docker dan merupakan alat pembersihan yang sangat mudah dan mudah. Begini cara menggunakan skrip pembersihan rasmi 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
Jika anda tidak mahu menggunakan alatan pihak ketiga atau skrip pembersihan rasmi, anda boleh. juga mengosongkan cache Docker secara manual. Walaupun proses ini boleh membosankan, anda boleh memastikan bahawa pembersihan selesai dan anda tahu dengan tepat sumber yang ingin anda padamkan.
Berikut ialah langkah untuk mengosongkan cache Docker secara manual:
docker images
untuk menyenaraikan semua imej setempat. docker rmi IMAGE
untuk memadam semua imej yang tidak digunakan. Ambil perhatian bahawa anda perlu menggantikan IMAGE dengan nama atau ID imej yang ingin anda padamkan. Jika sesetengah imej sedang digunakan, ia tidak boleh dipadamkan. docker system prune
untuk mengosongkan semua sumber yang tidak digunakan, termasuk imej, bekas dan rangkaian. # 停止所有运行中的容器 docker stop $(docker ps -q) # 列出所有本地镜像 docker images -a # 删除未使用的镜像 docker rmi $(docker images -f "dangling=true" -q) # 清理系统所有未使用的资源 docker system prune -a
Ringkasnya, apabila menggunakan cache Docker, kita perlu menyedari masalah ini dan menggunakan pelbagai kaedah yang tersedia untuk mengosongkan cache. Setiap kaedah mempunyai kelebihan dan kekurangannya sendiri, dan anda boleh memilih kaedah yang paling sesuai untuk anda berdasarkan keperluan anda.
Perlu diambil perhatian bahawa kita harus meneruskan dengan berhati-hati semasa membersihkan cache Docker. Memadamkan beberapa sumber yang sedang digunakan secara tidak sengaja boleh menyebabkan masalah untuk aplikasi anda. Oleh itu, adalah lebih baik untuk membuat sandaran data penting anda sebelum melakukan apa-apa.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa docker tidak dapat mengosongkan cache. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!