GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Mengoptimalkan Kinerja Docker

Pendahuluan

Kontainer Docker dirancang untuk berjalan di mana saja - di pusat data internal, cloud, atau lingkungan hybrid dan multi-cloud. Di luar kotak, wadah Docker cenderung mengungguli metode virtualisasi lainnya, tetapi mereka dapat lebih dioptimalkan untuk menawarkan kinerja yang lebih baik.

Artikel ini membahas alasan di balik kinerja Docker yang kurang optimal dalam beberapa skenario dan menawarkan solusi untuk diterapkan ke sistem Anda guna mengoptimalkan penerapan Docker.

Apa Penyebab Kinerja Docker Lambat?

Docker adalah sistem kompleks yang bergantung pada banyak faktor, termasuk konfigurasi host dan kualitas jaringan. Berikut ini adalah beberapa alasan paling umum mengapa Docker lambat.

Sumber Daya yang Dialokasikan Tidak Memadai

Ketika kontainer Docker tidak memiliki akses ke sumber daya yang cukup, mereka dengan cepat mengalami masalah kinerja. Bergantung pada ukuran gambar rata-rata proyek dan jumlah container yang Anda jalankan, host dan jaringan harus dapat mendukung beban kerja.

Ukuran Gambar Docker

Docker menggunakan gambar untuk membuat wadah. Gambar terdiri dari kode sumber, pustaka, dan dependensi yang diperlukan agar aplikasi berfungsi dengan baik. Wadah Docker yang dibuat dari gambar adalah lingkungan yang stabil untuk pengembangan dan pengujian.

Namun, gambar Docker yang berat menghabiskan banyak sumber daya dan menghabiskan seluruh sistem. Karena ukuran gambar adalah istilah relatif dan bergantung pada kebutuhan aplikasi tertentu, pernyataan ini terutama mengacu pada seberapa banyak gambar dioptimalkan atau membengkak dengan file yang tidak perlu .

Ukuran Konteks File Docker

docker build perintah menggunakan dua sumber untuk membangun gambar - Dockerfile dan konteks. Konteks adalah kumpulan file di lokasi tertentu yang dapat dirujuk oleh proses pembangunan. Jika ukuran konteks terlalu besar, kinerja waktu pembangunan mungkin terpengaruh.

Konfigurasi Docker Default Masih Digunakan

Meskipun konfigurasi Docker default menyediakan parameter yang wajar bagi Docker untuk bekerja di luar kotak, setiap sistem bersifat spesifik. Opsi startup daemon yang salah dikonfigurasi, jaringan , dan parameter lainnya dapat menurunkan kinerja Docker.

Latensi Jaringan

Kecuali Anda membuat registri, Docker akan menggunakan Dockerhub untuk mengambil gambar secara langsung. Memindahkan data dalam jumlah besar melalui internet menyebabkan latensi jaringan menjadi faktor dalam kinerja Docker secara umum.

Cara Mengoptimalkan Kinerja Docker

Ada beberapa cara untuk membuat Docker Anda bekerja lebih cepat, mulai dari peningkatan perangkat keras hingga tweak di dalam Docker itu sendiri.

Alokasikan Sumber Daya dengan Benar

Kinerja mesin host mempengaruhi kinerja kontainer. CPU yang lambat atau RAM yang tidak mencukupi dapat menjadi hambatan, memperlambat kinerja Docker.

Saat Anda mengalami kinerja Docker yang lambat, periksa CPU Anda, penggunaan memori, dan ruang disk yang tersedia. Pertimbangkan untuk memutakhirkan sistem Anda jika komponen tidak berfungsi seperti yang diharapkan.

Saat menangani penampung tertentu yang berperforma lebih buruk dari yang diharapkan, mungkin berguna untuk memeriksa metrik khusus penampung.

docker stats perintah menampilkan data metrik penting tentang wadah yang sedang berjalan. Gunakan untuk mendiagnosis potensi masalah.

docker stats

Output perintah menunjukkan:

  • Penggunaan CPU.
  • Penggunaan dan batas memori per penampung.
  • Persentase konsumsi memori.
  • NET I/O - Lalu lintas jaringan Docker.
  • BLOCK I/O - Data yang ditulis ke host block device.
  • PIDS - Jumlah utas yang dibuat oleh wadah.

Optimalkan Gambar Docker

Pertama, periksa ukuran gambar yang dibuat dengan menggunakan perintah berikut:

docker images

Outputnya mencantumkan repositori gambar, tag, ID, waktu sejak pembuatan, dan ukuran:

Periksa Dockerfile gambar dan pastikan konteks file tidak terlalu besar. Konteksnya mencantumkan file yang dibutuhkan Docker untuk membuat container.

Ukuran konteks ditampilkan dalam output docker build perintah:

docker build -t [image-name] .

Dalam contoh berikut, ukuran konteksnya adalah 4,641 MB:

Jika konteks build gambar terlalu besar, buat .dockerignore file di direktori root konteks, dan tambahkan file yang tidak perlu ke dalamnya. Docker akan mengabaikan file yang terdaftar di sana saat membangun gambar.

Berikut adalah contoh .dockerignore berkas:


temp*
*/temp*

Baris pertama memberitahu Docker untuk mengecualikan dari konteks semua file dan direktori yang namanya dimulai dengan temp di direktori root. Yang kedua melakukan hal yang sama untuk setiap sub-direktori root.

Periksa Dependensi

Saat memasang dependensi, image Docker berbasis Debian dapat menghasilkan binari dan file tambahan. Beberapa interdependensi ini tidak diperlukan untuk fungsi normal wadah dan dapat dihapus.

Untuk menghapus interdependensi yang tidak perlu secara manual, gunakan perintah yang tercantum di bawah ini.

Hapus paket di /var/cache :

apt clean

Hapus paket usang:

apt autoclean

Hapus interdependensi yang digunakan oleh paket yang dihapus:

apt autoremove

Pertimbangkan Beralih ke Arsitektur Layanan Mikro

Aplikasi monolitik cenderung lebih lambat daripada aplikasi yang dibangun menggunakan arsitektur layanan mikro. Jika container Docker Anda kesulitan bekerja, mungkin karena ukuran aplikasi di dalam container. Memigrasikan aplikasi ke layanan mikro memungkinkan pembagian beban kerja antara lebih dari satu penampung.

Gunakan Sumber Daya Khusus

Di lingkungan cloud, VM sering berbagi sumber daya perangkat keras dengan VM lain di server yang sama. Namun, hosting container pada perangkat keras khusus Bare Metal Cloud menghilangkan overhead virtualisasi dan meningkatkan kinerja container. Aplikasi dalam container tidak berbagi sumber daya sistem seperti RAM dan CPU, yang tidak menurunkan latensi dan memungkinkan aplikasi sepenuhnya menggunakan perangkat keras.

Gunakan Sistem Operasi Ringan

Sistem operasi berfitur lengkap seperti Windows, macOS, atau distribusi Linux komersial menghabiskan sebagian besar sumber daya sistem, menyisakan kurang dari yang diperlukan untuk kinerja Docker yang optimal. Distro ringan seperti RancherOS, CoreOS Container Linux, Alpine Linux, dan VMware Photon OS telah dioptimalkan untuk bekerja dengan container Docker. Membuat gambar pada sistem yang ringan dapat menghemat hingga 100 MB ukuran gambar akhir, sehingga meningkatkan kecepatan secara signifikan.

Cache Lapisan Dockerfile

Gunakan cache lapisan untuk meningkatkan kecepatan pembuatan gambar. Saat Docker mulai membuat gambar, ia mencari cache untuk lapisan yang berisi tanda tangan serupa dan menggunakannya dalam proses. Fitur ini mempercepat proses pembangunan.

Jika Anda ingin menentukan gambar yang sudah ada sebelumnya sebagai sumber cache, gunakan --cache-from pilihan:

docker build --cache-from [image-to-cache-from] -t [next-build] -f [path-to-dockerfile]

Docker
  1. Cara Menginstal Docker di Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  2. Cara Menginstal Docker Di CentOS

  3. Cara Menginstal Jenkins dengan Docker

  1. Cara Menginstal Docker di CentOS 7

  2. Cara Menginstal Docker di Raspberry Pi

  3. Cara Menginstal Docker di CentOS 8

  1. Cara menginstal Docker di Ubuntu 22.04

  2. Belajar Docker:Cara Membuat Wadah Docker

  3. Cara Menginstal Docker di Debian 11