Cara meluncurkan wadah dengan Docker Compose

Cara meluncurkan wadah dengan Docker Compose

Artikel ini akan memperkenalkan Docker Compose dan menunjukkan cara membuatnya bekerja untuk kebutuhan Anda. Kami akan menginstalnya, menulis file kompose sederhana dan meluncurkan wadah.

Kami kemudian akan melihat cara meluncurkan beberapa kontainer. Kemudian kita akan melihat cara membangun gambar dan akhir -akhir ini cara menggunakan beberapa file komposisi untuk meluncurkan kontainer di lingkungan yang berbeda, seperti pengembangan dan produksi, misalnya.

Dalam tutorial ini Anda akan belajar:

  • Cara Menginstal Docker Compose
  • Cara Menulis File Compose Sederhana
  • Cara mengeksekusi perintah penyusutan buruh pelabuhan untuk memulai dan menghentikan wadah
  • Cara meluncurkan beberapa kontainer
  • Cara membangun gambar dengan komposisi Docker
  • Cara mengganti menggunakan beberapa file compose docker
PhpMyadmin.

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Ubuntu 18.04
Perangkat lunak Docker menyusun
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo memerintah.
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Perkenalan



Sejauh ini kami telah melihat bagaimana Docker sangat bagus untuk mengelola gambar dan memulai wadah. Tetapi seringkali aplikasi mensyaratkan bahwa wadah yang berbeda naik dan berkomunikasi satu sama lain. Menghubungkan mereka melalui jaringan, membuatnya berbagi volume disk, dan variabel lingkungan yang lewat dapat dengan mudah berubah menjadi urutan perintah yang sulit didokumentasikan dan dipelihara dari waktu ke waktu. Di sana memasuki Docker Compose. Mari kita mulai menginstalnya dan kemudian tulis file COMPOE.

Menginstal Docker Compose

Di Ubuntu 18.04 Memasang Docker Composer langsung:

# App Install Docker-Compose 

Untuk menguji itu diinstal, Anda dapat memeriksa versinya:

$ Docker-Compose -V Docker-Compose Versi 1.17.1, bangun tidak diketahui 

Mesin Docker dan Docker Compose Versi adalah penting karena rilisnya sering dan fitur ditambahkan dan dihapus. Versi yang ditunjukkan di atas (1.17.1) dirilis pada November 2017. Jika Anda memerlukan rilis yang lebih baru, Anda dapat mengaktifkan repositori Ubuntu's Universe dan mendapatkan paket yang lebih baru, atau bahkan mengunduh dan menginstal rilis terbaru langsung dari situs web Docker Compose:

# curl -l "https: // github.com/docker/compose/rilis/download/1.23.2/Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/compose compose # sudo chmod +x/usr/lokal/bin/compose docker 


File Docker Compose

Docker Compose membaca file YAML, yang biasanya dinamai Docker-Compose.YML.

Versi: "3" Layanan: Apache: Gambar: PHP: 7.3 -Apache Container_name: Port 'Apache': - "80:80" Volume: - ./www:/var/www/html 
Menyalin

Pada awalnya, versi sintaksis diinformasikan sebagai 3. Selanjutnya, di bagian Layanan, hanya satu wadah yang ditentukan (Apache) dan tag gambar, container_name, Ports, Dan volume digunakan untuk menggambarkan bagaimana itu harus dieksekusi.

Sekarang buat direktori bernama www dan jatuhkan ini indeks.html file di dalam.

  Halo   

Selanjutnya, untuk menguji PHP bekerja cukup jatuhkan file ini di dalam www.

 


Docker menyusun perintah

Itu ke atas Perintah akan mengurus semuanya: Unduh gambar dari hub Docker jika mereka masih belum ada di cache lokal, membangun gambar khusus (yang bukan masalahnya; kami akan membahas bagian berikutnya) dan memulai wadah.

$ Docker -Compose up -D 

Itu -D Switch menginstruksikan Docker menyusun untuk menjalankan wadah di latar belakang. Jika nama file lain digunakan, bukannya Docker-Compose.YML, itu bisa diinformasikan dengan -F.

Perhatikan bahwa perintah peluncuran jauh lebih sederhana dari itu buruh pelabuhan Jalankan mitra. Ini memiliki dua keuntungan lagi: tidak berubah terlepas dari konten file komposisi, dan jika file kompose menentukan lebih dari satu wadah, semuanya akan dimulai. Hanya untuk perbandingan, perintah Docker Run adalah:

$ docker run -d --name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html php: 7.3-Apache 

Karena sintaksis file komposisi adalah YAML, indentasi penting. Jika Anda mendapatkan kesalahan sintaks, periksa sintaks YAML dengan parser online, seperti ini.

Anda dapat memeriksa wadah yang sedang berjalan.

$ Docker PS Container ID IM COMMILE STATUS STATUS NAMA NAMA 3937D997E029 PHP: 7.3-Apache "Docker-PHP-Endrypoi ..." 8 menit yang lalu 8 menit 0.0.0.0: 80-> 80/TCP Apache 

Sekarang akses http: // localhost di browser pilihan Anda dan kemudian http: // localhost/phpinfo.php.



Meluncurkan beberapa kontainer

Sekarang mari kita lihat file kompose yang lebih kompleks. Mari Bayangkan Kita Akan Menyiapkan Lingkungan Lokal Untuk Mengembangkan Aplikasi Lampu. Kami membutuhkan wadah dengan Apache dan PHP, wadah lain dengan mysql, dan mungkin wadah phpMyadmin untuk berinteraksi dengan mysql. Itu Docker-Compose.YML akan:

Versi: "3" Layanan: Apache: Gambar: PHP: 7.3 -Apache Container_name: 'Apache' Restart: 'Selalu' Port: - "80:80" - "443: 443" Volume: - ./www:/var/www/html - ./PHP/PHP.ini:/usr/local/etc/php/php.ini - ./Situs-Enabled:/etc/apache2/Situs-Enabled-Apache-logs:/var/log/apache2 mysql: gambar: mariadb: 10.4 container_name: 'mysql' restart: 'always' volumes: - mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somepassword MYSQL_DATABASE: db_site MYSQL_USER: user MYSQL_PASSWORD: password phpmyadmin: image: phpmyadmin/phpmyadmin:4.8 container_name: 'phpmyadmin' lingkungan: pma_host: mysql pma_port: 3306 port:-'8080: 80' Volume: Apache-logs: mysql-data: 
Menyalin

File Compose ini meluncurkan tiga kontainer, masing -masing memiliki bagian di bawah Layanan. Perhatikan kami mendefinisikan beberapa variabel lingkungan di bawah lingkungan. Itu Restart: Selalu Definisi menginstruksikan Docker untuk memulai wadah secara otomatis ketika layanan Docker dimulai (dalam kasus reboot, misalnya).

Perintah untuk memulai tiga wadah sama dengan contoh sederhana sebelumnya. Mudah diingat, benar?

$ Docker -Compose up -D 

Periksa wadah dibuat.



$ Docker PS Container ID IM IMage Perintah Status Port Status Nama F76ECE3508FE PHPMYADMIN/PHPMYADMIN: 4.8 "/lari.SH Supervisord ... "20 detik yang lalu naik 4 detik 9000/TCP, 0.0.0.0: 8080-> 80/tcp phpmyadmin 69b1b5054f3d mariadb: 10.4 "Docker-Encrypoint.S ... "20 detik yang lalu hingga 6 detik 3306/TCP MySQL 6747D7580DAC PHP: 7.3-Apache "Docker-PHP-Endrypoi ..." 2 hari yang lalu naik 14 detik 0.0.0.0: 80-> 80/tcp, 0.0.0.0: 443-> 443/TCP Apache 
Menyalin

Sangat menarik untuk memperhatikan bahwa wadah dapat berkomunikasi melalui nama mereka dan mengakses port satu sama lain tanpa perlu mengekspos port mereka ke host. Misalnya, kami tidak mengekspos port 3306 dari layanan MySQL (seperti yang dapat dilihat pada output di atas), tetapi phpMyadmin dapat mengakses port ini. Untuk mengakses phpMyadmin, kunjungi http: // localhost: 8080 dan masuk dengan pengguna dan kata sandi yang ditentukan dalam layanan MySQL (pengguna / kata sandi).

Membangun gambar dengan Docker Compose

Jika Anda perlu membangun gambar, alih -alih menggunakan yang sudah ada, cukup tambahkan a membangun menandai. Dalam contoh di bawah ini, kami memberi tahu Docker untuk melihat ke direktori saat ini untuk Dockerfile. Tag gambar akan digunakan untuk memberi nama gambar baru.

Versi: "3" Layanan: Apache: Build: . Gambar: container_name-my-image-name: 'Apache' restart: 'selalu' port:-"80:80" 
Menyalin

Override Menggunakan beberapa file Docker Compose

Docker Compose memudahkan untuk menyesuaikan peluncuran wadah untuk lingkungan yang berbeda. Anda hanya perlu membuat file override yang dipanggil dan meluncurkan wadah yang menentukannya. Mereka akan menimpa definisi sebelumnya yang dibuat dalam file komposisi dasar.

Misalnya, mari kita buat file override bernama Docker-Compose-Prod.YML dan tentukan kata sandi yang berbeda untuk mysql.

Versi: "3" Layanan: mysql: lingkungan: mysql_root_password: somepassword_other mysql_database: db_site_other mysql_user: user_other mysql_password: password_other 
Menyalin

Anda dapat menggunakan host lain untuk memulai wadah. Jika Anda menggunakan host yang sama, itu diperlukan untuk menghapus wadah mysql dan volume terkait. Jika tidak, wadah yang ada dengan kredensial lama akan digunakan.

$ docker berhenti mysql $ docker rm mysql $ docker volume ls $ docker volume rm directory_mysql-data 

Dan kemudian Anda dapat menjalankan perintah di bawah ini. Penting untuk menjaga urutan file. Beberapa file dapat digunakan. Dalam contoh kami, hanya lingkungan bagian dari mysql Layanan akan ditimpa.

$ Docker-Compose -F Docker-Compose.YML -F Docker-Compose-Prod.yml up -D 

Setelah memeriksa wadah berjalan, cobalah untuk mengakses phpMyadmin menggunakan kredensial baru.

Kesimpulan

Artikel ini memperkenalkan Docker Compose, alat praktis untuk mengatur peluncuran beberapa kontainer di host yang sama. Ada banyak kemungkinan dan membaca manual Docker Compose sangat disarankan. Dalam artikel berikutnya, kita akan mengeksplorasi cara untuk mengatur wadah Docker di antara banyak host.

Lainnya dalam seri artikel Docker ini

  • Pengantar Hands-on untuk Docker Containers
  • Cara berinteraksi dengan wadah Docker
  • Cara Menyesuaikan Gambar Docker Dengan DockerFiles

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Cara membuat tumpukan lampu berbasis Docker menggunakan Docker di…
  • Menguasai loop skrip bash
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Cara menginstal debian pada wadah Luks yang ada
  • Cara Menginstal dan Menyiapkan Hantu CMS di Ubuntu
  • Tutorial debugging GDB untuk pemula