Tidak suka iklan? Pergi Bebas Iklan Hari ini

Alat Alur Docker Mengonversi, Membuat, Memeriksa, dan Mengukur Kontainer Anda

Diterbitkan pada

Empat alat gratis yang memperbaiki penyebaran perintah Docker: konversi dari docker run ke compose, generasi Dockerfile awal, pemeriksaan untuk praktik terbaik, dan perhitungan batas sumber daya kontainer.

Alat Alur Docker: Konversi, Generasi, Pemeriksaan, dan Pengukuran Kontainer 1
IKLAN · HAPUS?

Ini mulai dengan cara yang tidak terlalu berbahaya. Anda menempelkan perintah ke thread Slack agar rekan kerja Anda bisa menjalankan database lokal. Dua bulan kemudian, perintah yang sama muncul di empat saluran berbeda, tiga wiki, dan komentar dalam skrip bash yang tidak diketahui siapa yang menulisnya. Tidak ada yang tahu apakah perintah itu masih berfungsi. Tidak ada yang tahu lingkungan mana yang digunakan. docker run Perintah Docker tumbuh dengan cepat. Satu instance Postgres membutuhkan flag jaringan, mount volume, kebijakan restart, variabel lingkungan untuk kredensial, dan pembindian port. Ini adalah satu baris dengan panjang 200 karakter yang hampir mustahil untuk diperiksa, diatur versi, atau diberikan kepada orang lain. Kalikan dengan lima layanan dan Anda akan mendapatkan infrastruktur yang tidak dapat dipertahankan.

Empat alat gratis memecahkan bagian-bagian berbeda dari masalah ini. Ketika digunakan secara berurutan, mereka membawa Anda dari perintah acak ke pengaturan container siap produksi yang telah dilintasi dalam waktu kurang dari sepuluh menit.

Alat 1: Konverter Docker Run ke Compose

Momen paling menyakitkan dalam alur Docker yang berat adalah mewarisi layanan yang seluruhnya terdapat dalam sejarah shell seseorang. Perintah tersebut mengubah artefak arkeologi itu menjadi sesuatu yang benar-benar

Di sini adalah contoh yang realistis: sebuah container Postgres dimulai dengan cara lama. Docker Run to Compose Converter Tempelkan itu ke dalam konverter dan Anda akan mendapatkan: docker-compose.yml.

Ini adalah file yang dapat diperiksa dan dikontrol versi, bukan perintah yang hanya berfungsi jika Anda mengingat semua flag. Konverter menangani alias jaringan, deklarasi volume, kebijakan restart, dan variabel lingkungan — semua hal yang hilang ketika seseorang mengetik dari ingatan.

docker run -d \
  --name postgres-db \
  --restart unless-stopped \
  -e POSTGRES_USER=myapp \
  -e POSTGRES_PASSWORD=secretpassword \
  -e POSTGRES_DB=myapp_production \
  -v postgres_data:/var/lib/postgresql/data \
  -p 5432:5432 \
  --network app-network \
  postgres:15-alpine

Ini sangat berguna saat menangani layanan baru. Daripada bertanya "apakah Anda bisa mengirimkan saya perintah run?", Anda bisa meminta file compose — dan jika mereka tidak memiliki satu, buatlah dari apa pun yang mereka miliki.

services:
  postgres-db:
    image: postgres:15-alpine
    container_name: postgres-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: secretpassword
      POSTGRES_DB: myapp_production
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - app-network

volumes:
  postgres_data:

networks:
  app-network:

Alat 2: Generator Dockerfile

Menulis Dockerfile dari awal untuk layanan baru berarti bukan mengcopy dari proyek lain (dan mewarisi kebiasaan buruknya) atau menghabiskan dua puluh menit untuk dokumentasi. Perintah tersebut menghindari keduanya dengan memberikan titik awal siap produksi berdasarkan bahasa dan runtime yang Anda pilih.

Pilih Node.js, Python, Go, PHP, atau runtime lainnya, dan generator menghasilkan Dockerfile yang sudah mencakup:

Versi dasar yang ditetapkan secara khusus daripada Generator Dockerfile Bangunan multi-tahap di mana mungkin (tahap pembangunan terpisah dari tahap runtime)

Pengguna non-root untuk menjalankan aplikasi

  • Urutan lapisan yang tepat untuk memaksimalkan efisiensi cache latest
  • Struktur yang ramah
  • Ini adalah hal-hal yang secara rutin dilupakan para pengembang saat menulis Dockerfile di bawah tekanan waktu, lalu mereka berusaha memperbaikinya saat audit keamanan menunjukkan masalahnya. Memulai dari template yang dihasilkan berarti Anda mulai dengan dasar yang sudah tercakup.
  • Outputnya tidak dimaksudkan untuk di-deploy langsung — Anda tetap akan menyesuaikan entrypoint, variabel lingkungan, dan perintah pembangunan. Namun, keputusan struktural sudah kuat, dan Anda sedang mengedit daripada menulis dari nol.
  • A .dockerignoreAlat 3: Linter Dockerfile

Bahkan insinyur berpengalaman menulis Dockerfile dengan masalah halus. Beberapa yang paling umum: menggunakan

sebagai tag dasar gambar, menggunakan

yang benar, menjalankan proses sebagai root, atau menginstal paket tanpa membersihkan cache apt setelahnya. Tidak ada yang membuat build gagal — mereka hanya menciptakan risiko keamanan, gambar yang terlalu besar, atau build yang tidak dapat direproduksi.

Mendeteksi masalah-masalah ini sebelum mereka mencapai produksi. Tempelkan Dockerfile Anda dan ia akan mengembalikan daftar peringatan dan penjelasan — bukan hanya apa yang salah, tetapi mengapa itu penting dan apa yang harus dilakukan sebagai gantinya. latest Flag umum yang Anda temui pada Dockerfile nyata: ADD ketika COPY Tetapkan versi dasar gambar Anda

Itu Hentikan Menulis Perintah docker run — Gunakan Docker Compose Sebagai Pengganti 1 akan mengunduh gambar yang berbeda pada setiap build; gunakan

untuk konsistensi

  • Gunakan COPY daripada ADDFROM node:latest memiliki perilaku implisit (mengextract tarball secara otomatis, mengambil URL) yang menciptakan hasil build yang tidak dapat diprediksi node:20-alpine Hapus hak akses root
  • — tambahkan direktifADD agar aplikasi Anda tidak berjalan sebagai root di dalam container
  • Hapus cache paket menambahkan ratusan megabyte ke setiap lapisan gambar USER Menggunakan linter membutuhkan waktu tiga puluh detik dan biasanya menangkap setidaknya dua atau tiga masalah dalam Dockerfile mana pun yang belum ditulis berdasarkan checklist. Ini adalah cara murah untuk melakukan peninjauan keamanan dan keakuratan parsial sebelum membuka PR.
  • Alat 4: Kalkulator Sumber Daya Container Dockerapt-get install tanpa && rm -rf /var/lib/apt/lists/* Momen saat pengembang paling sering menyadari bahwa mereka salah mengatur batas memori adalah ketika container di-kill karena memenuhi batas dan menghentikan layanan secara bersamaan. Kalkulator ini adalah langkah pencegah yang seharusnya dilakukan sebelum itu.

Anda memasukkan jenis container, beban kerja yang diharapkan, jumlah permintaan atau proses secara bersamaan, dan memori dasar per pekerja. Kalkulator mengembalikan batas yang direkomendasikan dengan buffer untuk lonjakan.

Ini penting karena perilaku default — tidak ada batas — berarti satu container yang berperilaku buruk dapat menguras semua layanan lain di host. Di infrastruktur bersama, ini adalah insiden. Kalkulator membantu Anda menetapkan batas yang realistis daripada sembarang, sehingga Anda tidak harus menebak

dan berharap. Kalkulator Sumber Daya Kontainer Docker Ini juga berguna untuk menentukan ukuran host. Jika Anda tahu aplikasi Anda membutuhkan 256MB per pekerja dan ingin menjalankan empat pekerja, Anda dapat menghitung ukuran instance minimum sebelum penyediaan — bukan menyediakan sesuatu yang terlalu kecil dan menyesuaikan di bawah beban.

Menggabungkan Alur Kerja Ini --memory dan --cpus Keempat alat ini mencerminkan urutan alami ketika Anda menyiapkan layanan baru atau mewarisi layanan lama:

Mulai dengan perintah run. 512m Jika Anda memiliki perintah yang berfungsi, konversi ke file compose terlebih dahulu. Ini memberi Anda sesuatu yang dapat diperiksa dan dikontrol versi.

Jika Anda tidak memiliki Dockerfile, buatlah Dockerfile tersebut.

Pilih runtime, dapatkan titik awal yang kuat, lalu sesuaikan untuk aplikasi Anda.

Lint Dockerfile.

  1. Lalui linter sebelum mengirimkan. Perbaiki apa pun yang ditandai — kebanyakan masalah dapat diperbaiki dalam waktu kurang dari satu menit. Tetapkan batas sumber daya. docker run Sebelum mengirim ke host bersama, hitung batas memori dan CPU yang realistis. Tambahkan ke file compose Anda.
  2. Urutan ini membutuhkan waktu lebih lama untuk dijelaskan daripada dijalankan. Dalam praktiknya, langkah-langkah dua hingga empat membutuhkan sekitar lima menit per layanan. Manfaatnya adalah pengaturan container yang dapat direproduksi, dapat diperiksa, dan diukur sesuai dengan host di mana ia berjalan. Alat Alur Docker: Konversi, Generasi, Pemeriksaan, dan Ukuran Container Anda 2
  3. Alat Alur Docker: Konversi, Generasi, Pemeriksaan, dan Ukuran Container Anda 1 Jalankan melalui linter sebelum mengirimkan. Perbaiki apa pun yang ditandai — kebanyakan masalah dapat diperbaiki dalam waktu kurang dari satu menit.
  4. Tetapkan batas sumber daya. Sebelum mendeploy ke host bersama, hitung batas memori dan CPU yang realistis. Tambahkan ke file compose Anda.

This sequence takes longer to describe than it does to execute. In practice, steps two through four take about five minutes per service. The payoff is a container setup that’s reproducible, reviewable, and sized correctly for the host it’s running on.

Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?