Rumah > Operasi dan penyelenggaraan > Docker > Bagaimana untuk menyelesaikan masalah bahawa docker tidak dapat mengosongkan cache

Bagaimana untuk menyelesaikan masalah bahawa docker tidak dapat mengosongkan cache

PHPz
Lepaskan: 2023-04-25 17:19:27
asal
1359 orang telah melayarinya

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.

Mengapa cache tidak boleh dikosongkan dalam Docker

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.

Bagaimana untuk menyelesaikan masalah tidak dapat mengosongkan cache

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:

1. Gunakan alat pembersihan pihak ketiga

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
Salin selepas log masuk

2. Gunakan skrip pembersihan rasmi Docker

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
Salin selepas log masuk

3 Kosongkan cache Docker secara manual

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:

  1. Hentikan semua bekas yang dijalankan.
  2. Gunakan perintah docker images untuk menyenaraikan semua imej setempat.
  3. Gunakan perintah 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.
  4. Laksanakan perintah 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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan