Rumah >Operasi dan penyelenggaraan >Docker >Mengapa fail dipadamkan dalam docker tetapi cakera masih 100%?

Mengapa fail dipadamkan dalam docker tetapi cakera masih 100%?

PHPz
PHPzasal
2023-04-18 10:25:252885semak imbas

Dalam proses menggunakan Docker, ramai orang mungkin menghadapi masalah bahawa selepas memadam imej atau bekas Docker, ruang cakera yang diduduki masih belum berkurangan dan masih 100%. kenapa ni? Mari kita lihat lebih dekat.

1. Penggunaan asas Docker

Sebelum memahami punca masalah, mari kita semak secara ringkas kegunaan asas docker.

Jalankan bekas docker:

docker run [PILIHAN] IMEJ [COMMAND] [ARG...]

di mana IMEJ ialah nama imej yang akan dijalankan, yang boleh dihantar melalui paparan arahan imej docker;

PILIHAN boleh termasuk yang berikut:

-d menentukan bekas untuk dijalankan di latar belakang

-p menentukan bekas pemetaan port, formatnya ialah: port hos: Port kontena;

--nama menentukan nama kontena;

rm memadamkan bekas secara automatik.

Padam bekas docker:

docker rm CONTAINER [CONTAINER...]

di mana CONTAINER merujuk kepada nama atau ID bekas, yang boleh dilihat melalui docker ps -arahan.

Padam imej docker:

IMEJ docker rmi [IMEJ...]

di mana IMEJ merujuk kepada nama atau ID imej, yang boleh dilihat melalui docker arahan imej.

2. Analisis Masalah

Apabila menggunakan arahan di atas untuk memadamkan bekas atau imej Docker, biasanya terdapat dua situasi:

Memadamkan bekas: Apabila kita gunakan Apabila arahan docker rm CONTAINER memadamkan bekas, Docker akan memadam secara automatik sistem fail yang digunakan oleh bekas itu, kerana setiap bekas "boleh" mempunyai sistem fail bebasnya sendiri. Oleh itu, apabila bekas dipadamkan, ruang yang didudukinya juga akan dilepaskan.

    Padam imej: Apabila kami menggunakan perintah DOcker rmi IMAGE untuk memadam imej, Docker akan memadamkan semua versi sejarah imej dan lapisan perantaraan, sambil mengekalkan semua kandungan yang diperlukan oleh bekas yang masih menggunakan imej. Oleh itu, jika imej telah digunakan oleh berbilang bekas, pemadaman imej tidak akan melepaskan semua ruang yang diduduki oleh imej.
  1. Berdasarkan situasi di atas, kami boleh membuat kesimpulan: memadamkan bekas atau imej Docker tidak menjamin pelepasan segera ruang cakera, dan memerlukan pembersihan manual menggunakan alat tertentu.
3. Penyelesaian

Docker sebenarnya menggunakan sistem fail hos apabila dijalankan, apabila bekas atau imej Docker dipadamkan, kami perlu membersihkan fail yang tertinggal pada hos Sahaja dengan mengalih keluar fail sampah bolehkah ruang cakera dilepaskan.

Berikut ialah kaedah pembersihan khusus:

Bersihkan fail sampah yang dijana oleh bekas

  1. Dalam bekas Docker, beberapa fail sementara atau fail log mungkin akan disimpan, jadi apabila memadamkan bekas, anda perlu memadam fail ini bersama-sama untuk mengelakkan menggunakan terlalu banyak ruang.
boleh dibersihkan dengan arahan berikut:

docker ps -aq | xargs docker rm -v

Fungsi arahan ini ialah: cari ID semua bekas dan letakkannya Hantar ID kepada arahan rm docker untuk membiarkan docker memadamkan bekas yang sepadan dan semua volum yang berkaitan secara automatik.

Bersihkan imej yang tidak digunakan

  1. Apabila kami menjalankan bekas, Docker akan memuat turun imej yang diperlukan daripada repositori rasmi atau repositori tersuai lain dan menyimpannya secara setempat Sandaran. Walaupun sandaran ini mengambil sedikit ruang, ia juga boleh menyebabkan ruang cakera tidak mencukupi jika terdapat sejumlah besar imej yang tidak digunakan.
Anda boleh menyemak imej yang tidak digunakan dengan arahan berikut:

imej docker -q | xargs docker inspect --format='{{.Id}} {{.RepoTags}} {{. Saiz}}' |. sort -k 3 -h

Fungsi arahan ini adalah untuk menyenaraikan ID, tag dan saiz semua imej dan mengisihnya mengikut saiz.

Anda boleh menggunakan arahan berikut untuk memadam semua imej terbiar:

imej docker -qf dangling=true | xargs docker rmi

Fungsi arahan ini ialah: cari semua imej yang tidak digunakan cermin dan padamkannya.

Bersihkan direktori data Docker

  1. Akhir sekali, jika kedua-dua kaedah di atas tidak berkesan, anda boleh membersihkan direktori data Docker secara manual. Secara lalai, direktori data Docker terletak di bawah /var/lib/docker/.
Anda boleh menggunakan arahan berikut untuk membersihkan direktori:

docker system prune -a -f

Fungsi arahan ini ialah: padam semua objek yang tidak digunakan, termasuk Imej yang tidak digunakan, data yang tidak digunakan dan cache binaan yang tidak digunakan.

4 Ringkasan

Dalam proses menggunakan Docker, untuk mengosongkan ruang cakera, kami perlu membersihkan secara manual beberapa fail sampah yang tertinggal dalam bekas, imej dan direktori data Docker . Fail ini bukan sahaja menduduki banyak ruang cakera, tetapi juga menduduki sumber sistem dan menjejaskan prestasi sistem. Oleh itu, adalah sangat perlu untuk membersihkan fail sampah Docker dengan kerap.

Atas ialah kandungan terperinci Mengapa fail dipadamkan dalam docker tetapi cakera masih 100%?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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