Memecahkan masalah Docker di Amazon API error (500): devmapper ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah Docker di Amazon API error (500): devmapper ECS

Kesalahan pada Docker berikut ini menunjukkan bahwa penyimpanan kolam yang tipis pada instans kontainer Anda sudah penuh, dan daemon Docker tidak dapat membuat kontainer baru:

CannotCreateContainerError: API error (500): devmapper: Thin Pool has 4350 free data blocks which is less than minimum required 4454 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

Secara default, Amazon ECS mengoptimalkan Amazon Linux AMI dari versi 2015.09.d dan kemudian diluncurkan dengan volume 8-GiB untuk sistem operasi yang terpasang /dev/xvda dan dipasang sebagai root sistem file. Terdapat tambahan volume 22-GiB yang terlampirkan di /dev/xvdcz yang Docker gunakan untuk penyimpanan citra dan metadata. Jika ruang penyimpanan ini terisi, daemon Docker tidak dapat membuat kontainer baru.

Cara termudah untuk menambahkan penyimpanan ke instans kontainer Anda adalah dengan mengakhiri instans yang sudah ada dan meluncurkan instans yang baru dengan volume penyimpanan data yang lebih besar. Namun, jika Anda tidak dapat melakukannya, Anda dapat menambahkan penyimpanan ke grup volume yang Docker gunakan dan memperpanjang logika volume dengan mengikuti prosedur di AMI Linux Amazon ECS yang dioptimalkan.

Jika penyimpanan instans kontainer Anda terlalu cepat terisi, ada beberapa tindakan yang dapat Anda ambil untuk mengurangi efek ini:

  • Untuk melihat informasi polling tipis, jalankan perintah berikut pada instance container Anda:

    docker info
  • (Agen kontainer Amazon ECS 1.8.0 dan yang lebih baru) Anda dapat mengurangi jumlah waktu penampung yang berhenti atau keluar tetap pada instance penampung Anda. Parameter variabel konfigurasi agen ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION menetapkan durasi waktu untuk menunggu dari saat tugas dihentikan hingga kontainer Docker dihapus (secara default, nilai ini adalah 3 jam). Hal ini akan menghapus data kontainer Docker. Jika nilai ini disetel terlalu rendah, Anda mungkin tidak dapat memeriksa kontainer yang dihentikan atau melihat log sebelum dihapus. Untuk informasi selengkapnya, lihat Konfigurasi agen kontainer Amazon ECS.

  • Anda dapat menghapus kontainer yang tidak berjalan dan gambar yang tidak digunakan dari instance penampung Anda. Anda dapat menggunakan contoh perintah berikut ini untuk menghapus kontainer yang berhenti secara manual dan citra yang tidak terpakai. Kontainer yang dihapus nantinya tidak dapat diperiksa, dan citra yang dihapus harus ditarik lagi sebelum memulai kontainer yang baru dari citra tersebut.

    Untuk menghapus kontainer yang tidak berjalan, jalankan perintah berikut pada instance container Anda:

    docker rm $(docker ps -aq)

    Untuk menghapus gambar yang tidak digunakan, jalankan perintah berikut pada instance container Anda:

    docker rmi $(docker images -q)
  • Anda dapat menghapus blok data yang tidak digunakan dalam wadah. Anda dapat menggunakan perintah berikut ini untuk menjalankan fstrim pada setiap kontainer yang berjalan dan membuang setiap blok data yang tidak digunakan oleh sistem file kontainer.

    sudo sh -c "docker ps -q | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ fstrim /proc/Z/root/"