Prasyarat
Pertama, kita perlu menginstal docker-compose di mesin kita hanya dengan menjalankan docker-compose -v
. Jika belum terinstal di mesin kita, kita perlu menginstalnya terlebih dahulu.
Buat Compose File
Selanjutnya, kita perlu membuat docker-compose.yml
file baru dan mengisinya dengan setup wordpress dan mysql. Nama file sebenarnya bisa apa saja, tetapi jika kita menggunakan nama lain, kita perlu menentukan file saat menjalankan perintah compose.
Versi: "3"
layanan:
wordpress:
container_name: my_wordpress
image: wordpress
port:
- "8080: 80"
link:
- mysql
lingkungan:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: "12345"
WORDPRESS_DB_NAME: wordpress
mysql:
container_name: my_mysql
image: "mysql:5.7"
volume:
- ./.mysql:/var/lib/mysql
lingkungan:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: "12345"
Ada banyak hal yang terjadi pada file itu, mari kita bedah satu per satu. Kolom pertama adalah version
yang memberi tahu Compose format file apa yang kita gunakan. Bidang tertentu mungkin tidak dikenali oleh versi Compose tertentu, jadi periksa versi mana yang didukung oleh Compose yang diinstal pada mesin Anda .
Bidang kedua kami adalah services
yang menggambarkan layanan apa yang ingin kami jalankan. Dalam hal ini, kita akan menjalankan wadah wordpress dan mysql. Di setiap layanan, kami memiliki container_name
bidang opsional yang akan digunakan sebagai nama wadah. Jika kita tidak menentukan nama container, Compose akan membuatnya secara otomatis.
Selanjutnya, kami memiliki image
bidang yang memberi tahu Compose gambar buruh pelabuhan mana yang ingin kami gunakan. Karena kami ingin wordpress dapat diakses di luar wadah, kami membuka pemetaan port dari 8080
host kami ke 80
port wadah dengan mendefinisikannya di ports
bidang.
Kami belajar di artikel sebelumnya bahwa kami perlu menghubungkan wadah wordpress dan mysql agar mereka dapat berkomunikasi satu sama lain. Dalam hal ini, kami biasa links
melakukannya dengan hanya menentukan wadah lain yang ingin kami hubungkan dengan layanan ini.
Kami menggunakan environment
bidang untuk mendaftar semua variabel lingkungan yang perlu diatur di setiap wadah. Terakhir, dalam layanan mysql, kami memasang volume ke dalamnya di volume
lapangan. Kami menautkan .mysql
folder di Host ke /var/lib/mysql
wadah mysql sehingga data basis data dapat bertahan bahkan jika kami mematikan wadah. Jika kita belum memiliki .mysql
folder di host, Docker akan membuatnya untuk kita.
Menjalankan Compose
Untuk menjalankan layanan, kita hanya perlu menjalankan satu perintah. Perhatikan bahwa -d
flag akan membuat layanan berjalan di latar belakang.
$ docker-compose up -d
Sedikit catatan, kita perlu menentukan nama file compose jika kita menggunakan nama yang tidak standar, misalnya some-compose.yml
.
$ docker-compose up -f some-compose.yml -d
Meskipun, kita menjalankan container secara deklaratif, kita masih dapat menggunakan docker
perintah untuk melakukan operasi pada container ini. Misalnya, jika kita ingin masuk ke dalam database, kita dapat menggunakan perintah yang sama seperti sebelumnya.
$ docker exec -it my_mysql mysql -u root -p
Untuk mematikan container ini, kita tidak perlu menghapusnya satu per satu. Kita cukup menjalankan:
$ docker-compose down
Dengan cara ini, kita dapat menghidupkan dan mematikan pengaturan dengan satu perintah. Keuntungan lain dari ini adalah bahwa file penulisan dapat dipindahkan ke komputer lain dan kami akan menjalankan pengaturan yang sama di dalamnya. Ini dapat memudahkan pengembangan dalam tim serta penerapan ke mesin pengujian atau produksi.
Docker adalah sebuah aplikasi yang bersifat open source yang berfungsi sebagai wadah/container untuk mengepak/memasukkan sebuah software secara lengkap beserta semua hal lainnya yang dibutuhkan oleh software tersebut dapat berfungsi.
Jadi dengan docker kita sudah tidak perlu menjalankan aplikasi selalu pada lokal komputer kita. Langsung saja kita mulai proses konfigurasi docker untuk laravel. Tapi sebelum memulai tutorial ini pastikan kita telah meng-install docker dekstop di komputer
Install Composer
Pastikan download composer terlebih dahulu di https://getcomposer.org/download/ lalu install. Selajutnya pastikan composer terinstall di komputer dengan cara ketikan composer di CMD
Install Laravel
composer create-project --prefer-dist laravel/laravel laravel-app
- Semua yang dibutuhkan aplikasi untuk dijalankan - biner, pustaka, file konfigurasi, dan dependensinya - dienkapsulasi dan diisolasi dalam penampungnya.
- Container itu sendiri dipisahkan dari OS host, dengan hanya akses terbatas ke resource yang mendasarinya - seperti mesin virtual (VM) ringan.
- Hasilnya, aplikasi dalam container dapat dijalankan di berbagai jenis infrastruktur — di bare metal, di dalam VM, dan di cloud — tanpa perlu melakukan refactor untuk setiap lingkungan.
- Di bagian bawah, terdapat perangkat keras infrastruktur yang dimaksud, termasuk CPU, penyimpanan disk, dan antarmuka jaringannya.
- Di atas itu, ada OS host dan kernelnya - yang terakhir berfungsi sebagai jembatan antara perangkat lunak OS dan perangkat keras sistem yang mendasarinya.
- Mesin kontainer dan OS tamu minimalnya, yang khusus untuk teknologi kontainerisasi yang digunakan, berada di atas OS host.
- Di bagian paling atas adalah binari dan pustaka (bins / libs) untuk setiap aplikasi dan aplikasi itu sendiri, berjalan di ruang pengguna yang terisolasi (wadah).
Cgroups dan LXC
● Jalankan perintah sebagai root.
● Dapatkan alamat IP.
Seseorang yang mem-boot container, Docker atau lainnya, dapat mengharapkan pengalaman yang sama terlepas dari lingkungan komputasi. Kumpulan wadah yang sama dapat dijalankan dan diskalakan apakah pengguna menggunakan distribusi Linux atau bahkan Microsoft Windows. Kompatibilitas lintas platform ini penting untuk ruang kerja digital saat ini, di mana pekerja mengandalkan banyak perangkat, OS, dan antarmuka untuk menyelesaikan pekerjaan.
- VM berjalan di atas hypervisor, yang merupakan perangkat keras, perangkat lunak, atau firmware khusus untuk mengoperasikan VM pada mesin host, seperti server atau laptop.
- Melalui hypervisor, setiap VM ditetapkan tidak hanya pada bin / lib penting, tetapi juga tumpukan perangkat keras tervirtualisasi termasuk CPU, penyimpanan, dan adaptor jaringan.
- Untuk menjalankan semua itu, setiap VM mengandalkan OS tamu yang lengkap. Hypervisor itu sendiri dapat dijalankan dari OS mesin host atau sebagai aplikasi bare-metal.
- Ada overhead yang signifikan yang terlibat, karena semua VM membutuhkan OS tamu dan kernel virtual mereka sendiri, ditambah kebutuhan akan lapisan ekstra yang berat (hypervisor) antara mereka dan host.
- Hypervisor juga dapat menyebabkan masalah kinerja tambahan, terutama saat dijalankan pada OS host, misalnya di Ubuntu.
- Karena keseluruhan resource overhead yang tinggi, mesin host yang mungkin dapat menjalankan 10 container atau lebih dengan nyaman dapat kesulitan untuk mendukung satu VM.
Bagaimana Container Bekerja
Implementasi containerisasi paling populer adalah Docker dan Kubernetes.

Kontainer versus Mesin Virtual
Penampung adalah abstraksi dari lapisan aplikasi (artinya setiap penampung mensimulasikan aplikasi perangkat lunak yang berbeda). Meskipun setiap penampung menjalankan proses yang terisolasi, beberapa penampung berbagi Sistem Operasi yang sama.
VM adalah abstraksi dari lapisan perangkat keras (artinya setiap VM mensimulasikan mesin fisik yang dapat menjalankan perangkat lunak). Teknologi VM dapat menggunakan satu server fisik untuk menjalankan server yang setara dengan banyak server (masing-masing disebut VM). Jadi, sementara beberapa VM berjalan pada satu mesin fisik, setiap VM memiliki salinan Sistem Operasi, aplikasi, dan file terkait, pustaka, dan dependensinya sendiri.
Menjalankan perangkat lunak di lingkungan dalam kontainer umumnya menggunakan lebih sedikit ruang dan memori daripada menjalankan perangkat lunak dalam VM yang berbeda, karena yang terakhir memerlukan salinan terpisah dari Sistem Operasi untuk dijalankan di setiap VM.
Portabilitas yang sangat baik di seluruh ruang kerja digital
Wadah membuat ide "tulis sekali, jalankan di mana saja" menjadi kenyataan. Setiap penampung telah diambil dari OS host dan akan berjalan sama di lokasi mana pun. Dengan demikian, ini dapat ditulis untuk satu lingkungan host dan kemudian di-porting dan disebarkan ke yang lain, selama host baru mendukung teknologi container dan OS yang dipermasalahkan. Kontainer Linux menyumbang sebagian besar dari semua kontainer yang diterapkan dan dapat di-porting di berbagai OS berbasis Linux baik itu di lokasi atau di cloud. Di Windows, container Linux dapat dijalankan dengan andal di dalam VM Linux atau melalui isolasi Hyper-V. Kompatibilitas seperti itu mendukung ruang kerja digital, di mana banyak awan, perangkat, dan alur kerja berpotongan.
Isolasi kesalahan untuk aplikasi dan layanan mikro
Jika satu wadah gagal, yang lain berbagi kernel OS tidak terpengaruh, berkat isolasi ruang pengguna di antara mereka. Itu menguntungkan aplikasi berbasis layanan mikro, di mana banyak komponen yang berpotensi mendukung program yang lebih besar. Layanan mikro dalam wadah tertentu dapat diperbaiki, diterapkan ulang, dan diskalakan tanpa menyebabkan waktu henti aplikasi
Pengelolaan yang lebih mudah melalui orkestrasi
Orkestrasi container melalui solusi seperti platform Kubernetes membuatnya praktis untuk mengelola aplikasi dan layanan dalam container dalam skala besar. Dengan menggunakan Kubernetes, dimungkinkan untuk mengotomatiskan peluncuran dan rollback, mengatur sistem penyimpanan, melakukan load balancing, dan memulai ulang container yang gagal. Kubernetes kompatibel dengan banyak mesin kontainer termasuk yang kompatibel dengan Docker dan OCI.
Aplikasi dan Layanan Apa yang Biasanya Dimasukkan?
Sebuah wadah dapat mendukung hampir semua jenis aplikasi yang di era sebelumnya akan secara tradisional divirtualisasikan atau dijalankan secara native di mesin. Pada saat yang sama, ada beberapa paradigma komputasi yang sangat cocok untuk containerization, termasuk:
- Layanan mikro : Arsitektur layanan mikro dapat dikonfigurasi secara efisien sebagai sekumpulan kontainer yang beroperasi bersama-sama dan berputar serta dinonaktifkan sesuai kebutuhan.
- Database : Pecahan database dapat dimasukkan ke dalam container dan setiap aplikasi diberi database khusus, bukan perlu menghubungkan semuanya ke database monolitik.
- Server web : Menjalankan server web dalam wadah hanya memerlukan beberapa input baris perintah untuk memulai, ditambah lagi, ini menghindari kebutuhan untuk menjalankan server secara langsung di host.
- Penampung dalam VM : Penampung dapat dijalankan dalam VM, biasanya untuk memaksimalkan pemanfaatan perangkat keras, berbicara dengan layanan tertentu di VM dan / atau meningkatkan keamanan.
- Citrix ADCs : ADC mengelola kinerja dan keamanan aplikasi. Saat dimasukkan ke dalam container , itu membuat layanan L4-L7 lebih mudah tersedia di lingkungan DevOps.
Bagaimana Kontainerisasi Terkait dengan Layanan Mikro dan Orkestrasi Kontainer?
Layanan mikro
Layanan mikro yang terdiri dari aplikasi dapat dikemas dan disebarkan dalam wadah dan dikelola pada infrastruktur awan yang dapat diskalakan. Manfaat utama containerization layanan mikro mencakup overhead yang minimal, penskalaan independen, dan pengelolaan yang mudah melalui orkestrator container seperti Kubernetes.
Citrix ADC dapat membantu transisi dari aplikasi berbasis monolitik ke layanan mikro . Lebih khusus lagi, ini membantu admin, pengembang, dan insinyur keandalan situs dengan masalah jaringan seperti manajemen lalu lintas dan pergeseran dari arsitektur berbasis monolitik ke layanan mikro.
Jika layanan mikro dikemas dalam wadah yang diterapkan dalam skala besar, platform orkestrasi wadah diperlukan untuk mengelola siklus hidup wadah.
Orkestrasi Penampung
Kubernetes adalah platform orkestrasi container yang paling menonjol. Awalnya dikembangkan oleh Google, ini terlihat bersumber terbuka dan sekarang dikelola oleh Cloud Native Computing Foundation.
Meskipun ini bukan satu-satunya solusi seperti itu, rangkaian fiturnya menunjukkan kemampuan orkestrator container modern, karena dapat:
- Buka wadah dengan nama DNS atau alamat IP.
- Tangani load balancing dan distribusi lalu lintas untuk kontainer.
- Pasang penyimpanan lokal dan berbasis cloud secara otomatis.
- Alokasikan sumber daya CPU dan RAM tertentu ke container, lalu paskan ke node.
- Ganti atau matikan container yang bermasalah tanpa mengganggu kinerja dan waktu kerja aplikasi.
- Kelola informasi sensitif seperti kata sandi dan token tanpa membangun kembali wadah.
- Ubah status wadah dan kembalikan wadah lama untuk menggantinya dengan yang baru.