Menghubungkan Kontainer
Pengenalan Mengenai Menghubungkan Kontainer
Hai, para penggemar Docker yang bersemangat! Hari ini, kita akan melihat dunia yang menarik dari penghubungan kontainer. Sebagai guru komputer yang ramah di lingkungan sekitar Anda, saya disini untuk membimbing Anda dalam perjalanan ini, bahkan jika Anda belum pernah menulis satu baris kode sebelumnya. Mari sabar dan mari kita misi ke laut kontainer!
Penghubungan kontainer mirip dengan memperkenalkan dua teman di pesta. Ini memungkinkan kontainer untuk berkomunikasi satu sama lain, berbagi informasi dan sumber daya. Bayangkan Anda di acara makanan berupa potluck (itu adalah host Docker kita), dan setiap hidangan (kontainer) perlu tahu hidangan lainnya yang tersedia. Itu sebenarnya apa yang kita lakukan dengan penghubungan kontainer!
Mengapa Penghubungan Kontainer Penting
Anda mungkin bertanya-tanya, " Mengapa saya perlu khawatir tentang penghubungan kontainer?" Well, biarkan saya memberitakan Anda cerita singkat. Pada suatu waktu, di pusat data yang jauh, aplikasi hidup dalam isolasi. Mereka tidak bisa berbicara satu sama lain, berbagi data, atau bekerja bersama. Itu adalah eksistensi yang sunyi. Tetapi kemudian, penghubungan kontainer datang dan mengubah segalanya!
Penghubungan kontainer memungkinkan kita untuk:
- Membuat aplikasi multi-kontainer yang kompleks
- Berbagi data antar kontainer
- Meningkatkan keamanan dengan mengisolasi layanan
- Memperbesar aplikasi kita lebih mudah
Penghubungan Kontainer Dasar
Mari kita mulai dengan contoh sederhana. Kita akan membuat dua kontainer: server web dan database, dan menghubungkannya bersamaan.
Langkah 1: Membuat Kontainer Database
Pertama-tama, kita akan membuat kontainer database kita. Kita akan menggunakan MySQL untuk contoh ini.
docker run -d --name mydb -e MYSQL_ROOT_PASSWORD=secret mysql:latest
Berpikirkan ini:
-
-d
: Menjalankan kontainer dalam mode terpisah (di belakang) -
--name mydb
: Memberi nama kontainer kita -
-e MYSQL_ROOT_PASSWORD=secret
: Menetapkan variabel lingkungan untuk kata sandi root -
mysql:latest
: Menggunakan image MySQL terbaru
Langkah 2: Membuat Kontainer Server Web
Sekarang, mari kita membuat kontainer server web kita dan menghubungkannya ke database.
docker run -d --name myweb --link mydb:db -p 80:80 nginx:latest
Ini apa yang terjadi:
-
--link mydb:db
: Ini adalah magik! Kita menghubungkan kontainermydb
dan menamakannyadb
dalam kontainer web kita -
-p 80:80
: Memetakan port 80 di host ke port 80 di kontainer
Mengerti Hubungan
Ketika kita menggunakan opsi --link
, Docker melakukan beberapa hal untuk kita:
- Menambahkan entri ke file
/etc/hosts
di kontainer web - Menyetel variabel lingkungan di kontainer web
- Memungkinkan kontainer web untuk terhubung ke kontainer database
Mari kita lihat ke dalam kontainer web kita untuk melihat apa yang terjadi:
docker exec -it myweb bash
Setelah masuk, kita dapat memeriksa file /etc/hosts
:
cat /etc/hosts
Anda seharusnya melihat entri untuk kontainer db
dengan alamat IPnya.
Variabel Lingkungan
Docker juga menyiapkan variabel lingkungan untuk kita. Mari kita daftarkan mereka:
env | grep DB_
Anda akan melihat variabel seperti DB_PORT
, DB_NAME
, dll. Ini membuat mudah bagi aplikasi kita untuk terhubung ke database.
Penghubungan Legacy vs. Jaringan yang Ditentukan Pengguna
Sekarang, saya memiliki konfesi. Tanda --link
yang kita gunakan sebenarnya dianggap legacy di Docker. Itu seperti menggunakan telepon genggam di era smartphone - itu masih berfungsi, tetapi ada opsi yang lebih baik tersedia.
Cara modern untuk menghubungkan kontainer adalah dengan menggunakan jaringan yang ditentukan pengguna. Mari kita lihat bagaimana itu berkerja:
Langkah 1: Membuat Jaringan
docker network create mynetwork
Langkah 2: Menjalankan Kontainer di Jaringan
docker run -d --name mydb --network mynetwork -e MYSQL_ROOT_PASSWORD=secret mysql:latest
docker run -d --name myweb --network mynetwork -p 80:80 nginx:latest
Sekarang kontainer kita dapat berkomunikasi menggunakan nama kontainer mereka sebagai hostname, tanpa penghubungan eksplisit!
Keuntungan Jaringan yang Ditentukan Pengguna
Jaringan yang ditentukan pengguna menawarkan beberapa keuntungan:
- Isolasi yang lebih baik
- Resolusi DNS otomatis
- Kemampuan untuk menghubungkan/menghapus kontainer dari jaringan sewaktu-waktu
Contoh Praktis: WordPress dan MySQL
Mari kita terapkan pengetahuan kita dengan contoh dunia nyata: mengatur WordPress dengan MySQL.
Langkah 1: Membuat Jaringan
docker network create wordpress-network
Langkah 2: Menjalankan Kontainer MySQL
docker run -d --name wordpress-db --network wordpress-network -e MYSQL_ROOT_PASSWORD=rootpassword -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpresspassword mysql:5.7
Langkah 3: Menjalankan Kontainer WordPress
docker run -d --name wordpress-site --network wordpress-network -e WORDPRESS_DB_HOST=wordpress-db -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpresspassword -e WORDPRESS_DB_NAME=wordpress -p 8080:80 wordpress:latest
Sekarang, jika Anda mengunjungi http://localhost:8080
di browser Anda, Anda seharusnya melihat halaman pengaturan WordPress!
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama ke dunia penghubungan kontainer. Kita telah melihat banyak hal, dari penghubungan dasar hingga jaringan yang ditentukan pengguna, dan bahkan mengatur situs WordPress menggunakan kontainer.
Ingat, penghubungan kontainer adalah tentang memungkinkan aplikasi kita bekerja bersama dalam harmoni. Itu seperti memimpin orkestra - setiap kontainer adalah alat, dan ketika dihubungkan dengan benar, mereka menciptakan musik yang indah bersama-sama.
Buatlanjutkan eksperimen dengan kontainer dan opsi jaringan yang berbeda. Semakin banyak Anda berlatih, semakin nyaman Anda akan konsep ini.
Selamat mengontainerisasi, dan semoga image Docker Anda selalu bangun dengan sukses!
Credits: Image by storyset