GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 20.04

Pengantar

Docker menyederhanakan proses pengelolaan proses aplikasi dalam container. Meskipun container mirip dengan mesin virtual dalam beberapa hal, container lebih ringan dan ramah sumber daya. Hal ini memungkinkan pengembang untuk memecah lingkungan aplikasi menjadi beberapa layanan yang terisolasi.

Untuk aplikasi yang bergantung pada beberapa layanan, mengatur semua container untuk memulai, berkomunikasi, dan mematikan bersama-sama dapat dengan cepat menjadi berat. Docker Compose adalah alat yang memungkinkan Anda menjalankan lingkungan aplikasi multi-kontainer berdasarkan definisi yang ditetapkan dalam file YAML. Ini menggunakan definisi layanan untuk membangun lingkungan yang sepenuhnya dapat disesuaikan dengan beberapa wadah yang dapat berbagi jaringan dan volume data.

Dalam panduan ini, Anda akan menunjukkan cara menginstal Docker Compose di server Ubuntu 20.04 dan cara mulai menggunakan alat ini.

Prasyarat

Untuk mengikuti artikel ini, Anda memerlukan:

  • Akses ke mesin lokal Ubuntu 20.04 atau server pengembangan sebagai pengguna non-root dengan hak sudo. Jika Anda menggunakan server jarak jauh, disarankan untuk memasang firewall aktif. Untuk mengaturnya, silakan merujuk ke Panduan Pengaturan Server Awal kami untuk Ubuntu 20.04.
  • Docker diinstal di server atau mesin lokal Anda, mengikuti Langkah 1 dan 2 Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04.

Catatan: Tutorial ini akan memandu Anda dalam menginstal Docker Compose v1, yang menggunakan docker-compose . Dimulai dengan Docker Compose v2, Docker telah bermigrasi menggunakan compose Perintah plugin CLI seperti yang didokumentasikan dalam versi Ubuntu 22.04 terbaru dari tutorial ini, dan jauh dari docker-compose asli . Meskipun penginstalannya berbeda, secara umum penggunaan sebenarnya melibatkan penghapusan tanda hubung dari docker-compose panggilan untuk menjadi docker compose . Untuk detail kompatibilitas lengkap, periksa dokumentasi Docker resmi tentang kompatibilitas perintah antara compose . yang baru dan docker-compose . yang lama .

Langkah 1 — Memasang Docker Compose

Untuk memastikan Anda mendapatkan versi stabil terbaru dari Docker Compose, Anda harus mengunduh perangkat lunak ini dari repositori Github resminya.

Pertama, konfirmasikan versi terbaru yang tersedia di halaman rilis mereka. Pada saat penulisan ini, versi stabil terbaru adalah 1.29.2 .

Perintah berikut akan mengunduh 1.29.2 lepaskan dan simpan file yang dapat dieksekusi di /usr/local/bin/docker-compose , yang akan membuat perangkat lunak ini dapat diakses secara global sebagai docker-compose :

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Selanjutnya, atur izin yang benar sehingga docker-compose perintah dapat dieksekusi:

  1. sudo chmod +x /usr/local/bin/docker-compose

Untuk memverifikasi bahwa penginstalan berhasil, Anda dapat menjalankan:

  1. docker-compose --version

Anda akan melihat output seperti ini:

Outputdocker-compose version 1.29.2, build 5becea4c

Docker Compose sekarang berhasil diinstal pada sistem Anda. Di bagian berikutnya, Anda akan melihat cara menyiapkan docker-compose.yml file dan dapatkan lingkungan kemas dan berjalan dengan alat ini.

Langkah 2 — Menyiapkan docker-compose.yml Berkas

Untuk mendemonstrasikan cara menyiapkan docker-compose.yml file dan bekerja dengan Docker Compose, Anda akan membuat lingkungan server web menggunakan gambar Nginx resmi dari Docker Hub, registri Docker publik. Lingkungan kemas ini akan menyajikan satu file HTML statis.

Mulailah dengan membuat direktori baru di folder rumah Anda, lalu pindah ke dalamnya:

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

Di direktori ini, siapkan folder aplikasi sebagai root dokumen untuk lingkungan Nginx Anda:

  1. mkdir app

Menggunakan editor teks pilihan Anda, buat index.html baru file dalam app map:

  1. nano app/index.html

Tempatkan konten berikut ke dalam file ini:

~/compose-demo/app/index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

Simpan dan tutup file setelah selesai. Jika Anda menggunakan nano , Anda dapat melakukannya dengan mengetikkan CTRL+X , lalu Y dan ENTER untuk mengonfirmasi.

Selanjutnya, buat docker-compose.yml berkas:

  1. nano docker-compose.yml

Masukkan konten berikut di docker-compose.yml . Anda berkas:

docker-compose.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

docker-compose.yml file biasanya dimulai dengan version definisi. Ini akan memberi tahu Docker Compose versi konfigurasi mana yang Anda gunakan.

Anda kemudian memiliki services blok, tempat Anda mengatur layanan yang merupakan bagian dari lingkungan ini. Dalam kasus Anda, Anda memiliki satu layanan yang disebut web . Layanan ini menggunakan nginx:alpine image dan menyiapkan pengalihan port dengan ports pengarahan. Semua permintaan pada port 8000 dari host mesin (sistem tempat Anda menjalankan Docker Compose) akan dialihkan ke web kontainer pada port 80 , tempat Nginx akan dijalankan.

volumes direktif akan membuat volume bersama antara mesin Host dan wadah. Ini akan membagikan app lokal folder dengan wadah, dan volume akan berada di /usr/share/nginx/html di dalam wadah, yang kemudian akan menimpa root dokumen default untuk Nginx.

Simpan dan tutup file.

Anda telah menyiapkan halaman demo dan docker-compose.yml file untuk membuat lingkungan server web kemas yang akan melayaninya. Pada langkah berikutnya, Anda akan memunculkan lingkungan ini dengan Docker Compose.

Langkah 3 — Menjalankan Penulisan Docker

Dengan docker-compose.yml file di tempat, Anda sekarang dapat menjalankan Docker Compose untuk meningkatkan lingkungan Anda. Perintah berikut akan mengunduh gambar Docker yang diperlukan, membuat wadah untuk web service, dan jalankan lingkungan kemas dalam mode latar belakang:

  1. docker-compose up -d

Docker Compose pertama-tama akan mencari gambar yang ditentukan di sistem lokal Anda, dan jika tidak dapat menemukan gambar, itu akan mengunduh gambar dari Docker Hub. Anda akan melihat output seperti ini:

OutputCreating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Catatan: Jika Anda mengalami kesalahan izin terkait soket Docker, ini berarti Anda melewatkan Langkah 2 Cara Memasang dan Menggunakan Docker di Ubuntu 20.04. Kembali dan menyelesaikan langkah itu akan mengaktifkan izin untuk menjalankan perintah buruh pelabuhan tanpa sudo .

Lingkungan Anda sekarang aktif dan berjalan di latar belakang. Untuk memverifikasi bahwa penampung aktif, Anda dapat menjalankan:

  1. docker-compose ps

Perintah ini akan menampilkan informasi tentang container yang sedang berjalan dan statusnya, serta pengalihan port apa pun yang ada saat ini:

Output       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

Sekarang Anda dapat mengakses aplikasi demo dengan mengarahkan browser Anda ke localhost:8000 jika Anda menjalankan demo ini di komputer lokal Anda, atau your_server_domain_or_IP:8000 jika Anda menjalankan demo ini di server jauh.

Anda akan melihat halaman seperti ini:

Volume bersama yang telah Anda siapkan dalam docker-compose.yml file menyimpan app . Anda file folder sinkron dengan root dokumen penampung. Jika Anda membuat perubahan pada index.html file, mereka akan secara otomatis diambil oleh penampung dan dengan demikian tercermin pada browser Anda saat Anda memuat ulang halaman.

Pada langkah berikutnya, Anda akan melihat cara mengelola lingkungan dalam container dengan perintah Docker Compose.

Langkah 4 — Mengenal Perintah Tulis Docker

Anda telah melihat cara menyiapkan docker-compose.yml file dan bawa lingkungan Anda dengan docker-compose up . Sekarang Anda akan melihat cara menggunakan perintah Docker Compose untuk mengelola dan berinteraksi dengan lingkungan kemas Anda.

Untuk memeriksa log yang dihasilkan oleh wadah Nginx Anda, Anda dapat menggunakan logs perintah:

  1. docker-compose logs

Anda akan melihat output seperti ini:

OutputAttaching to compose-demo_web_1
web_1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1  | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1  | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1  | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1  | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Jika Anda ingin menjeda eksekusi lingkungan tanpa mengubah status container saat ini, Anda dapat menggunakan:

  1. docker-compose pause
OutputPausing compose-demo_web_1 ... done

Untuk melanjutkan eksekusi setelah mengeluarkan jeda:

  1. docker-compose unpause
OutputUnpausing compose-demo_web_1 ... done

stop perintah akan menghentikan eksekusi container, tetapi tidak akan menghancurkan data apa pun yang terkait dengan container Anda:

  1. docker-compose stop
OutputStopping compose-demo_web_1 ... done

Jika Anda ingin menghapus penampung, jaringan, dan volume yang terkait dengan lingkungan terkemas ini, gunakan down perintah:

  1. docker-compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default

Perhatikan bahwa ini tidak akan menghapus gambar dasar yang digunakan oleh Docker Compose untuk meningkatkan lingkungan Anda (dalam kasus Anda, nginx:alpine ). Dengan cara ini, setiap kali Anda menghidupkan kembali lingkungan Anda dengan docker-compose up , prosesnya akan jauh lebih cepat karena gambar sudah ada di sistem Anda.

Jika Anda juga ingin menghapus gambar dasar dari sistem Anda, Anda dapat menggunakan:

  1. docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Catatan :Silakan merujuk ke panduan kami tentang Cara Memasang dan Menggunakan Docker untuk referensi lebih rinci tentang perintah Docker.

Kesimpulan

Dalam panduan ini, Anda telah melihat cara menginstal Docker Compose dan menyiapkan lingkungan kemas berdasarkan gambar server web Nginx. Anda juga telah melihat cara mengelola lingkungan ini menggunakan perintah Compose.

Untuk referensi lengkap dari semua docker-compose yang tersedia perintah, periksa dokumentasi resmi.

Jika Anda tertarik dengan penggunaan Docker Compose lainnya, lihat Cara Menginstal WordPress Dengan Docker Compose dan juga Cara Mengamankan Aplikasi Node.js dalam Kontainer dengan Nginx, Let's Encrypt, dan Docker Compose.


Docker
  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  2. Cara Menginstal dan Menggunakan Docker Compose di CentOS

  3. Cara Menginstal Docker Compose di Ubuntu 18.04

  1. Cara Menginstal Docker Compose di Ubuntu 18.04

  2. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  3. Cara Menginstal Docker Compose di Ubuntu 20.04

  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 18.04

  2. Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 18.04

  3. Cara Menginstal dan Menggunakan Docker Compose di CentOS 7