GNU/Linux >> Belajar Linux >  >> Linux

Cara Menampung Aplikasi Legacy

Pendahuluan

Organisasi di seluruh dunia mengadopsi pendekatan berbasis layanan mikro berbasis wadah untuk pengiriman perangkat lunak. Namun, sebagian besar perangkat lunak dirancang dan ditulis sebelum wadah berbasis gambar modern ada.

Jika Anda berencana untuk bertransisi ke model penerapan container Docker, Anda harus mempertimbangkan efek yang akan ditimbulkan migrasi pada aplikasi yang ada.

Tutorial ini menguraikan pekerjaan persiapan yang diperlukan dan perintah Docker dasar untuk menampung aplikasi lama.

Mengapa Menampung Aplikasi Lama?

Perusahaan yang mengadopsi penyebaran perangkat lunak kontainer perlu merestrukturisasi organisasi mereka untuk mencerminkan proses alur kerja kontainer baru. Menganalisis potensi manfaat penerapan container berguna untuk menentukan pendekatan terbaik untuk aplikasi Anda.

Efisiensi dan Portabilitas

Penyebaran container dapat menjadi solusi yang efektif karena container biasanya dimulai dalam hitungan detik. Gambar kontainer menampung semua binari, pustaka, dan dependensi, yang berarti tidak perlu menambahkan konfigurasi khusus lingkungan. Gambar yang sama sekarang portabel di beberapa sistem. Gambar bebas dari batasan lingkungan yang membuat penerapan dapat diandalkan, portabel, dan skalabel. Dengan menyimpan aplikasi, Anda memisahkan sistem file dan waktu proses dari hostnya.

Perawatan dan Penskalaan

Alih-alih mengelola aplikasi monolitik yang luas, Anda membuat pola arsitektur di mana aplikasi kompleks terdiri dari proses kecil dan independen yang berkomunikasi satu sama lain menggunakan API.

Dengan menyelesaikan konflik aplikasi antara lingkungan yang berbeda, pengembang dapat berbagi perangkat lunak dan ketergantungan mereka dengan operasi TI dan lingkungan produksi. Pengembang dan operasi TI terikat erat dan dapat berkolaborasi secara efektif. Alur kerja container memberi Dev Ops kontinuitas yang mereka butuhkan. Kemampuan untuk mengidentifikasi masalah di awal siklus pengembangan mengurangi biaya perbaikan besar-besaran di tahap selanjutnya.

Alat Pengelolaan Penampung

Alat manajemen container pihak ketiga menyediakan mekanisme untuk jaringan, pemantauan, dan penyimpanan persisten untuk aplikasi container. Aplikasi lama dapat memanfaatkan kerangka kerja orkestrasi canggih seperti Kubernetes.

Alat ini meningkatkan waktu kerja, kemampuan analitik, dan mempermudah pemantauan kondisi aplikasi.

Rencana untuk Kontainer

Agar berhasil memigrasikan aplikasi Anda, Anda perlu mengembangkan strategi yang memeriksa kebutuhan aplikasi Anda ditambah dengan sifat container. Pada tingkat teknis, aplikasi apa pun dapat digunakan dalam sebuah wadah. Ada beberapa kemungkinan solusi untuk men-deploy aplikasi lawas dalam container:

1. Tulis ulang dan desain ulang aplikasi lawas Anda sepenuhnya.

2. Jalankan aplikasi monolitik yang ada dalam satu wadah.

3. Tingkatkan dan bentuk ulang aplikasi agar dapat memanfaatkan arsitektur terdistribusi baru.

Terlepas dari jalur yang dipilih, sangat penting untuk mengidentifikasi dengan benar apakah aplikasi adalah kandidat yang baik untuk diterapkan di lingkungan container. Fokusnya harus pada arsitektur, kinerja, dan keamanan.

Arsitektur

Aplikasi perlu didekonstruksi menjadi layanan individual sehingga dapat diskalakan dan digunakan secara individual. Untuk memanfaatkan sepenuhnya penerapan container, tentukan apakah mungkin untuk membagi aplikasi yang ada menjadi beberapa container.

Idealnya, satu proses harus ditugaskan ke satu wadah. Bahkan pekerjaan cron harus dieksternalkan ke dalam wadah terpisah. Ini mungkin memerlukan pengulangan arsitektur aplikasi Anda.

Kinerja

Tentukan apakah aplikasi Anda memiliki persyaratan perangkat keras tertentu. Kontainer menggunakan fitur Linux yang mempartisi kernel yang mendasarinya. Mungkin perlu untuk mengonfigurasi wadah individual dengan parameter unik atau menyediakan sumber daya tertentu.

Selanjutnya, pertimbangkan bahwa Docker tidak memiliki daemon init untuk membersihkan proses zombie. Pastikan untuk menyediakannya sebagai ENTRYPOINT di file docker Anda. Pertimbangkan dumb.ino sebagai solusi ringan yang memungkinkan.

Keamanan

Container menawarkan lebih sedikit isolasi daripada VM, dan penting untuk menentukan tingkat keamanan yang dibutuhkan aplikasi Anda. Siapkan batasan ketat akun pengguna dan layanan. Jaga agar rahasia dan sandi tetap terisolasi dari image container Anda, patuhi prinsip-prinsip dengan hak istimewa paling rendah, dan pertahankan pertahanan yang mendalam untuk mengamankan cluster Kubernetes.

Persyaratan Memori Persisten

Dalam orkestrasi container, semua data persisten tidak disimpan dalam lapisan yang dapat ditulisi container. Sebaliknya, data permanen disimpan ke volume persisten yang ditentukan dengan jelas. Pendekatan ini memastikan bahwa data permanen tidak menambah ukuran container dan ada secara independen dari siklus hidup container.

Jika data permanen aplikasi lama Anda tersebar di seluruh sistem file atau ditulis ke jalur yang dibagikan dengan aplikasi itu sendiri, kami sarankan Anda merestrukturisasi aplikasi sehingga menulis semua data permanen ke satu jalur di sistem file. Itu akan menyederhanakan migrasi data aplikasi ke lingkungan dalam container.

Mengeksternalisasi Layanan

Identifikasi layanan lokal yang dapat dieksternalisasi dan dijalankan dalam wadah terpisah. Cari caching dan layanan database, yang paling mudah dieksternalisasi. Sebagai alternatif, Anda mungkin ingin menggunakan layanan terkelola daripada mengonfigurasi dan mengelolanya sendiri.

Siapkan Gambar untuk Berbagai Lingkungan

Anda diharapkan menggunakan satu gambar Docker dalam lingkungan pengembangan, QA, dan produksi. Mempertimbangkan variabel konfigurasi khusus lingkungan. Jika Anda mengidentifikasinya, Anda perlu menulis skrip start-up yang akan memperbarui file konfigurasi aplikasi default.

Menerapkan Aplikasi Lama ke Container

Dengan asumsi bahwa Docker aktif dan berjalan di sistem Anda, ada beberapa cara untuk membuat image Docker:

  1. Gunakan gambar kosong dan tambahkan lapisan tambahan dengan mengimpor sekumpulan file eksternal.
  2. Gunakan baris perintah untuk memasukkan perintah Docker individual secara interaktif dan membuat gambar baru dengan docker commit .
  3. Gunakan alat manajemen konfigurasi yang canggih (misalnya, sebagai Wayang dan Koki) untuk penerapan yang rumit.
  4. Gunakan gambar dasar yang ada dan tentukan sekumpulan perintah di Dockerfile .

Dockerfiles adalah titik awal yang sangat baik untuk memahami cara menggunakan runtime container untuk membuat gambar. Jika Anda membuat kesalahan, Anda dapat dengan mudah mengubah file dan membuat image container baru dengan satu perintah.

File Docker Aplikasi Lama

Dockerfile adalah file teks sederhana dengan serangkaian perintah yang dijalankan dalam urutan yang ketat. Dockerfiles biasanya didasarkan pada gambar yang ada, hanya dengan beberapa pengaturan tambahan. Gunakan antarmuka baris perintah Anda untuk membuat direktori yang berisi file yang Anda perlukan untuk build Anda:

mkdir ImageForLegacyApp
cd ImageForLegacyApp

Setelah proses build dimulai, file dalam direktori tersebut dikirim ke daemon Docker. Dengan membatasi jumlah file, kami mempercepat proses pembuatan dan menghemat ruang disk.

Gunakan editor teks pilihan Anda untuk pengkodean atau pemrograman (kami menggunakan vim) untuk membuat file Docker kosong, dalam ImageForLegacyApp direktori:

vim Dockerfile

Instruksi build berikut adalah untuk aplikasi PHP sederhana. Kita mulai dengan menarik sistem operasi dengan PHP dan Apache terinstal.

FROM php:apache

FROM adalah instruksi pertama di Dockerfile. Ini mendefinisikan gambar dasar, dalam contoh ini OS Debian dengan PHP dan Apache diinstal. Jika Anda menginginkan versi tertentu dari gambar dasar, pastikan untuk menggunakan tag yang sesuai (misalnya, php:7.0-apache ).

COPY ./var/www/html

Gunakan COPY perintah untuk menyalin kode PHP Anda ke gambar. Gunakan ADD perintah sebagai gantinya jika ekstraksi tar diperlukan.

WORKDIR /var/www/html

Ini mendefinisikan folder kerja. Semua perintah selanjutnya akan diterapkan ke folder ini.

EXPOSE 80

Setel port untuk didengarkan aplikasi dengan EXPOSE memerintah. Setelah Anda memulai image dan menautkan yang sedang berjalan ke container lain, port yang terbuka tersedia untuk container lain seolah-olah berada di sistem lokal yang sama.

CMD [“php”, “./legacy_app.php”]

Gunakan CMD perintah untuk mengidentifikasi perintah default untuk dijalankan dari gambar, bersama dengan opsi yang ingin Anda berikan padanya. Anda hanya dapat memiliki satu baris CMD dalam file Docker.

LABEL version="1.1"

Kami menggunakan LABEL instruksi untuk menambahkan metadata ke gambar. Selain label yang Anda tetapkan, gambar akan menarik semua label yang ditetapkan ke gambar induk yang dipanggil dengan FROM perintah.

Membangun Gambar Docker

Kami telah berhasil mendefinisikan instruksi di dalam Dockerfile. Mulai proses pembuatan dengan memasukkan perintah berikut di terminal perintah Anda:

docker build -t legacyapp [location_of_Dockerfile]

Selama proses pembuatan, setiap gambar menerima ID unik. Untuk menemukan dan mengidentifikasi gambar dalam registri dengan mudah, gunakan -t perintah untuk memberi nama gambar. Dalam contoh ini, gambar akan diberi nama legacyapp .

docker build -t legacyapp .
  1. docker build perintah menginstruksikan daemon Docker untuk membuat gambar berdasarkan file Docker.
  2. Jalur yang diberikan ke docker build perintah digunakan untuk mengunggah file dan direktori.
  3. Setiap langkah pembangunan diberi nomor saat daemon Docker melanjutkan dengan mengeksekusi perintah dari Dockerfile.
  1. Setiap perintah menghasilkan gambar baru. Dan ID gambar ditampilkan di layar.
  2. Setiap kontainer buruh pelabuhan perantara dihapus sebelum melanjutkan ke langkah berikutnya untuk menghemat ruang disk.

Gambar Docker sudah siap, dan Anda telah menerima referensi ID unik. Selain itu, kami tidak menggunakan tag versi sehingga Docker secara otomatis menandai gambar sebagai :latest .

Menjalankan Gambar Docker

Gambar sekarang siap untuk digunakan. docker run sub-perintah memulai wadah:

sudo docker run --name apache2 legacyapp

--name argumen menyediakan wadah dengan nama yang unik, sedangkan legacyapp argumen mewakili nama gambar buruh pelabuhan statis yang kita buat.

Untuk melihat daftar container yang telah dimulai dan dihapus ketik perintah berikut:

docker ps -a

Keluarannya memberikan ikhtisar bersama dengan ID penampung dan status.

Navigasikan ke localhost untuk memeriksa apakah aplikasi Anda dilayani dengan benar oleh server Apache.


Linux
  1. Cara menginstal aplikasi Spotify di Linux

  2. Cara Keluar dari Kontainer Docker

  3. Bagaimana cara membatasi penggunaan memori aplikasi?

  1. Cara Meningkatkan Waktu Startup Aplikasi Di Linux

  2. Cara menggunakan Podman di dalam wadah

  3. Cara Mengubah Aplikasi Default Debian

  1. Cara memulai aplikasi secara otomatis di Ubuntu 22.04 Jammy Jellyfish Linux

  2. Cara menyiapkan Aplikasi Pohon Kacang Elastis di AWS

  3. Bagaimana File Aplikasi yang Saling Tidak Tepercaya Dilindungi Di Linux?