Docker Compose adalah alat yang terintegrasi secara native dengan Docker, dan membuat pengelolaan aplikasi multi-kontainer menjadi mudah.
Manfaat yang diberikan Docker Compose sangat banyak, beberapa di antaranya meliputi:
- Mengelola Jaringan Kontainer dengan Mudah: Menghubungkan dua kontainer melalui jaringan Docker sangat sederhana di Docker Compose, sesederhana mendefinisikan jaringan dan memberi tahu kontainer untuk menghubungkannya. Selain itu, Docker Compose dapat secara otomatis membuat dan menghancurkan jaringan saat Anda membuat dan menghancurkan container itu sendiri.
- Ketergantungan Penampung: Anda memiliki wadah Docker yang membutuhkan wadah Docker lain untuk aktif dan berjalan, katakanlah, sebuah database. Docker Compose memungkinkan Anda untuk menentukan dependensi untuk sebuah wadah, yang mengharuskan dependensi untuk aktif dan berjalan sebelum hal lain dimulai.
- Pengaturan yang Dapat Direproduksi: Karena penyiapan container akan ditentukan bahkan sebelum apa pun dibuat, hal ini memungkinkan reproduktifitas penyiapan, membuatnya lebih mudah untuk mentransfernya ke sistem lain. Meskipun Anda secara teoritis dapat melakukan hal seperti itu dalam sesuatu seperti Bash, hal itu dapat membuat segalanya menjadi kurang fleksibel dan lebih sulit untuk beradaptasi dengan perubahan.
Menginstal Docker Compose di Linux
Docker Compose sudah tersedia di sebagian besar repositori distribusi.
Anda dapat menginstal Docker Compose di Ubuntu dan distribusi berbasis Debian menggunakan perintah berikut:
sudo apt install docker-compose
Di Arch dan Manjaro, Anda dapat menggunakan:
sudo pacman -S docker-compose
Di Fedora, Anda dapat menggunakan perintah dnf:
sudo dnf install docker-compose
Anda mungkin perlu sedikit lebih berusaha untuk menginstal Docker Compose di CentOS.
Untuk distribusi lain, Anda selalu dapat melihat dokumen penginstalan untuk informasi tentang cara mendapatkan paket yang dibutuhkan.
Membuat File Penulisan Docker Pertama Kami
Panduan ini mengasumsikan Anda sudah terbiasa dan nyaman dengan alat CLI buruh pelabuhan. Jika tidak, pertimbangkan untuk melakukannya, karena kemungkinan besar Anda akan mengalami cegukan sederhana.
File Docker Compose disimpan dengan nama docker-compose.yml
, dan secara otomatis ditemukan saat Anda menjalankan docker-compose
perintah dalam direktori yang sama. Sintaksnya berbentuk, Anda dapat menebaknya, YAML.
Kami memiliki tutorial khusus tentang dasar-dasar YAML jika Anda tertarik untuk mempelajarinya.
Dasar-Dasar YAML Yang Harus Diketahui Setiap Insinyur DevOpsSebagai seorang insinyur DevOps, Anda akan banyak berurusan dengan file YAML. Itu selalu merupakan ide yang baik untuk memahami sintaks YAML dasar. Buku Pegangan LinuxRakesh JainKita akan mulai dengan file yang membuat instance Nextcloud, lalu membahas bagaimana sebenarnya hal itu.
Hal pertama yang pertama, Anda perlu membuat file penulisan. Buat direktori kosong di sistem Anda, dan buat docker-compose.yml
berkas.
Selanjutnya, isi file dengan konten berikut:
version: '3.5'
services:
nextcloud_app:
container_name: nextcloud_app
image: nextcloud
restart: unless-stopped
networks:
- nextcloud
ports:
- 80:80
volumes:
- ./data/app:/var/www/html
depends_on:
- nextcloud_mariadb
nextcloud_mariadb:
container_name: nextcloud_mariadb
image: mariadb
restart: unless-stopped
networks:
- nextcloud
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: 'mariadb'
networks:
nextcloud:
name: nextcloud_docker_network
Sekarang yang harus Anda jalankan hanyalah docker-compose up -d
, dan Anda akan berhasil menerapkan Nextcloud dengan Docker.
Berikut halaman login Nextcloud.
Memahami File Penulisan Docker kami
Sekarang setelah Anda melihat bahwa file tersebut benar-benar berfungsi, mari kita bahas isi file tersebut sehingga Anda dapat benar-benar memahami apa yang sebenarnya dilakukannya.
Tag 'versi'
version: '3.5'
Hal pertama yang pertama, version
menandai. Ini hanya menentukan versi format file Docker Compose, karena versi yang berbeda akan memiliki sintaks yang berbeda. Biasanya Anda ingin menyimpan ini ke versi terbaru, tetapi tidak harus, yang dapat membantu jika Anda memiliki beberapa file lama.
Tag 'layanan'
services:
nextcloud_app:
container_name: nextcloud_app
image: nextcloud
restart: unless-stopped
networks:
- nextcloud
ports:
- 80:80
volumes:
- ./data/app:/var/www/html
depends_on:
- nextcloud_mariadb
nextcloud_mariadb:
container_name: nextcloud_mariadb
image: mariadb
restart: unless-stopped
networks:
- nextcloud
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: 'mariadb'
Selanjutnya, Anda melihat services
menandai. Ini memulai daftar untuk semua aplikasi yang dibuat saat docker-compose up -d
dijalankan.
Diikuti dengan ini kami memulai daftar untuk wadah pertama kami, nextcloud_app
. Ini berfungsi sebagai pengidentifikasi untuk aplikasi, yang dapat digunakan oleh perintah Docker Compose lainnya. Perhatikan bahwa ini bukan nama wadah itu sendiri - yang ditentukan di bagian selanjutnya.
Sekarang, Anda mulai mendefinisikan segala sesuatu tentang wadah Anda. Berikut ini adalah ulasan tentang arti semua bidang, meskipun sebagian besar sudah cukup jelas jika Anda sudah mengetahui cara menggunakan Docker:
container_name
- Menentukan nama wadah. Setara dengan--name
pilihan.image
- Menentukan gambar apa yang akan diambil untuk penampung.restart
- Mendefinisikan kebijakan restart untuk wadah. Setara dengan--restart
.networks
- Mendefinisikan jaringan yang terhubung ke wadah. Jaringan ini bisa dibuat atau sudah bisa ada. Nilai ini berfungsi sebagai pengenal untukdocker-compose
dan bukan nama sebenarnya dari jaringan (yang didefinisikan dalamnetworks
bagian tag).ports
- Mendefinisikan port host yang wadah dapat terhubung ke. Setara dengan--publish
.volumes
- Menentukan volume untuk wadah. Setara dengan--volume
.environment
- Mendefinisikan variabel lingkungan untuk wadah. Setara dengan--env
. Opsi ini mendukung dua tipe sintaks. Yang pertama adalahvariable: value
, yang digunakan di sini. Opsi lainnya, yang mungkin lebih familiar jika Anda terbiasa dengandocker
Sintaks CLI, adalah- variable=value
.depends_on
- Menentukan dependensi wadah. Ini digunakan untuk meminta wadah untuk tidak memulai sampai dependensinya ada. Ini menerima nilai dari daftar penampung. (Bukancontainer_name
!)
Tag 'jaringan'
networks:
nextcloud:
name: nextcloud_docker_network
Sekarang Anda masuk ke networks
menandai. Ini digunakan untuk menentukan jaringan yang kami cantumkan di bawah networks
untuk kontainer kami.
Di dalam networks
bagian, pertama-tama Anda mencantumkan pengenal yang Anda berikan ke jaringan di bawah services
. Ini dia nextcloud
.
Selanjutnya anda tentukan nama jaringan yang dapat dilihat dengan docker network ls
. Di sini, kami menamakannya nextcloud_docker_network
.
Jika Anda ingin wadah bergabung dengan jaringan yang sudah ada, Anda akan menggunakan sintaks berikut, menggantikan network_name
dengan nama jaringan Docker:
networks:
nextcloud:
external: true
name: network_name
Dan di sana Anda pergi. Itu meringkas seluruh file!
Anda dapat memberi nama file yml apa saja tetapi kemudian Anda harus menentukan nama file saat menggunakan perintah docker-compose. Menjaga tradisi dan menamainya docker-compose.yml membuat perintah tetap singkat.Menutup
Sekarang Anda mengetahui dasar-dasar penggunaan Docker Compose, dan manfaat yang dapat Anda peroleh melalui penggunaannya. Sekarang Anda juga sedang dalam proses memahami apa yang dilakukan orang saat mereka mendistribusikan container mereka melalui file Compose.
Sesuatu tidak berfungsi, atau ada pertanyaan yang tersisa? Anda dipersilakan untuk meninggalkannya di bagian komentar di bawah.