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!

Docker - Container Linking

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:

  1. Membuat aplikasi multi-kontainer yang kompleks
  2. Berbagi data antar kontainer
  3. Meningkatkan keamanan dengan mengisolasi layanan
  4. 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 kontainer mydb dan menamakannya db 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:

  1. Menambahkan entri ke file /etc/hosts di kontainer web
  2. Menyetel variabel lingkungan di kontainer web
  3. 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:

  1. Isolasi yang lebih baik
  2. Resolusi DNS otomatis
  3. 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