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

Tingkatkan Game DevOps Anda Dengan Contoh Docker Run Ini

docker run command adalah salah satu perintah pertama yang harus Anda pelajari setelah menginstal Docker. Tetapi pernahkah Anda bertanya-tanya bagaimana lagi Anda dapat menggunakan docker run perintah untuk menyebarkan dan mengelola aplikasi Anda secara efektif? Pergi melalui satu contoh menjalankan Docker (docker run) akan sangat bagus. Tapi coba tebak, Anda akan mendapatkan lebih banyak di tutorial ini!

Dalam artikel ini, Anda akan mempelajari cara meningkatkan game DevOps Anda dengan beberapa contoh menjalankan Docker yang dapat Anda gunakan untuk meningkatkan alur kerja Anda.

Baca terus dan jangan pernah tersesat saat menjalankan perintah Docker lagi!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut ini.

  • Mesin Linux – Demo ini menggunakan Ubuntu 20.04, tetapi semua distribusi Linux akan berfungsi. Berikut cara menginstal Ubuntu.
  • Docker diinstal pada mesin.
  • Akun pengguna dengan root/hak istimewa sudo.

Docker Run Contoh #1:Menjalankan Container secara Interaktif

Anda mungkin telah menjalankan container untuk beberapa waktu sekarang, tetapi tahukah Anda bahwa ada beberapa situasi yang lebih baik untuk menjalankan container Docker dalam mode interaktif?

Docker memungkinkan Anda menjalankan container dalam mode interaktif saat:

  • Anda sedang memecahkan masalah dan perlu melihat output dari perintah yang dijalankan di dalam container.
  • Anda sedang bereksperimen dengan perintah Docker baru dan ingin melihat hasil perintah secara real-time.
  • Anda menjalankan proses dalam container yang memerlukan input manual dari Anda.

Saat menjalankan contoh Docker run ( docker run ) tanpa opsi, perilaku defaultnya adalah menjalankan container dalam mode interaktif. Saat menjalankan container dalam mode interaktif, Anda dapat melihat output dari perintah yang dijalankan dalam container di terminal saat dijalankan.

1. Jalankan perintah berikut untuk menjalankan container (my_nginx ) dalam mode interaktif dan publikasikan (-p ) port 80 wadah ke port 8080 dari mesin host Anda. Anda dapat mengubah nama wadah sesuai keinginan.

Perintah menggunakan nginx gambar dari hub Docker untuk membuat wadah dan secara otomatis menghapus (--rm ) wadah saat wadah dihentikan.

docker container run --rm --name my_nginx -p 8080:80 nginx

Karena Anda menggunakan pengguna non-root dengan hak istimewa sudo , tidak perlu menambahkan sudo saat menjalankan perintah Docker

Anda akan melihat output log dari server web nginx di terminal Anda secara langsung, seperti yang ditunjukkan di bawah ini.

Menjalankan wadah interaktif menyediakan banyak informasi, tetapi mungkin Anda lebih suka menyaring informasi yang hanya Anda butuhkan. Jika demikian, tambahkan tanda -a dan tentukan aliran standar (-a) untuk penampung, seperti yang ditunjukkan di bawah ini.

Menentukan aliran standar memberitahu Docker untuk hanya menampilkan keluaran stdout dari wadah my_nginx.

docker container run -a stdout --rm --name my_nginx -p 8080:80 nginx

Secara default, jika Anda tidak memberikan flag -a, stdin, stdout, dan stderr semuanya terpasang ke terminal. Bendera -a mengambil argumen berikut dan membantu mendeklarasikan keluaran Anda agar hanya melihat informasi yang relevan:

  • -a stdin – melampirkan stdin ke container, mengirimkan semua input di terminal Anda ke container.
  • -a stdout – melampirkan stdout ke container, menampilkan semua output yang dihasilkan oleh container ke terminal Anda.
  • -a stderr – melampirkan stderr ke penampung, menampilkan semua pesan kesalahan yang dihasilkan oleh penampung ke terminal Anda.

Anda dapat melihat di bawah bahwa outputnya sekarang tidak terlalu berantakan.

2. Selanjutnya, buka terminal lain dan jalankan docker ps perintah untuk melihat daftar container yang berjalan di mesin host Anda.

docker ps

Di bawah ini, Anda dapat melihat wadah my_nginx Anda tercantum dalam output.

3. Terakhir, jalankan curl perintah di bawah ini untuk menguji server web nginx.

curl http://localhost:8080

Anda dapat melihat di bawah bahwa output log dari server web nginx ditampilkan di terminal Anda (sisi kiri) segera setelah output dihasilkan.

Contoh Jalankan Docker # 2:Menjalankan Kontainer dalam Mode Terpisah

Anda baru saja belajar menjalankan container Anda dalam mode interaktif dan melihat output di terminal Anda saat dijalankan. Tetapi jika Anda tidak mengincar keluaran container di terminal Anda, Anda dapat menjalankan container dalam mode terpisah.

Dalam mode terpisah, penampung berjalan di latar belakang, dan Anda tidak melihat output dari perintah yang Anda jalankan dalam penampung di terminal Anda.

Jalankan perintah berikut untuk menjalankan container (my_nginx ) dalam mode terpisah (-d ).

docker container run --rm --name my_nginx -d -p 8080:80 nginx

Setelah container berjalan dalam mode terpisah, Docker mengarahkan output ke log container. Pada titik ini, wadah my_nginx sedang berjalan di output perintah latar belakang, seperti yang ditunjukkan di bawah ini.

Anda juga dapat melihat ID penampung unik di output. Anda dapat menggunakan ID ini untuk memasang penampung atau memulai/menghentikan/menghapus penampung.

Sekarang, jalankan docker ps perintah untuk melihat daftar container yang berjalan di mesin host Anda.

Karena container (my_nginx) berjalan di latar belakang, Anda dapat menjalankan perintah apa pun tanpa membuka terminal baru.

docker ps

Anda akan melihat output berikut, yang menunjukkan bahwa my_nginx container sekarang berjalan dalam mode terpisah.

Jika karena alasan tertentu, server web NGINX Anda tidak berfungsi dengan benar saat container Anda berjalan dalam mode terpisah, Anda harus memasang terminal Anda ke container yang sedang berjalan. Anda dapat melampirkan ke wadah yang sedang berjalan dengan menjalankan docker attach perintah diikuti dengan ID atau nama container (my_nginx ), seperti yang ditunjukkan di bawah ini.

docker container attach my_nginx

Seperti yang Anda lihat di bawah, Anda telah berhasil melampirkan ke my_nginx wadah. Sekarang, Anda dapat mengetahui akar masalah dan memperbaikinya.

Membuat Jaringan Jembatan

Salah satu keuntungan menggunakan Docker adalah ia mengelola jaringan container Anda untuk Anda. Dengan Docker, Anda tidak perlu khawatir mengonfigurasi jaringan Anda. Docker menyiapkan jaringan untuk Anda secara otomatis. Termasuk membuat jaringan, menghubungkan wadah ke jaringan, dan mengelola alamat IP.

Lihat bagaimana Docker menyiapkan jaringan untuk container Anda dan membuat jaringan jembatan.

1. Jalankan docker perintah di bawah ini untuk menjalankan wadah Ubuntu dengan akses penuh ke sumber daya jaringan pada mesin host (--net=host ), yang berguna untuk debugging.

Opsi -ti memberi tahu Docker untuk menyimpan wadah dalam mode interaktif. Anda harus menentukan opsi ini ketika Anda bekerja dengan Bash shell. Menjalankan perintah ini seperti di bagian "Menjalankan Kontainer Secara Interaktif" tidak akan berfungsi.

docker run -ti --rm --net=host ubuntu bash

2. Selanjutnya, jalankan apt update perintah dalam wadah untuk memperbarui daftar paket.

apt update -y

3. Jalankan perintah di bawah ini untuk install bridge-utils kemasan. Paket ini diperlukan untuk membuat dan mengelola perangkat jembatan.

apt install bridge-utils

4. Sekarang, jalankan brctl show berikut ini perintah untuk membuat daftar jaringan jembatan di sistem Anda.

brctl show

Anda akan melihat daftar jaringan jembatan yang mirip dengan output berikut. Perhatikan bahwa ada perangkat jembatan bernama docker0. Jaringan ini adalah jaringan virtual yang digunakan Docker untuk membuat jaringan virtual untuk container Anda jika Anda tidak menentukan jaringan virtual bridge kustom.

5. Buka terminal lain dan jalankan docker network perintah di bawah ini untuk membuat jaringan baru. Anda dapat memberi nama jaringan secara berbeda, tetapi dalam tutorial ini, jaringan tersebut diberi nama my-ata-network .

docker network create my-ata-network

Anda akan melihat ID jaringan unik yang dikembalikan, seperti yang ditunjukkan di bawah ini. Catat ID jaringan karena Anda akan mencocokkannya dengan ID jaringan jembatan baru nanti (langkah enam).

6. Kembali ke terminal container Ubuntu Anda, dan jalankan perintah berikut untuk membuat daftar jaringan jembatan (show ) di sistem Anda lagi.

brctl show

Seperti yang ditunjukkan di bawah ini, Anda akan melihat jaringan jembatan baru yang tercantum dalam output bernama br-d9ba7f94ac73. Anda dapat melihat bagian d9ba7f94ac73 cocok dengan ID jaringan yang dikembalikan pada langkah lima.

Keluaran ini mengonfirmasi bahwa Docker membuat jaringan jembatan baru bernama my-ata-network dan menambahkan wadah Ubuntu ke jaringan jembatan itu.

Docker Run Contoh #3:Menjalankan Container dengan Port Forwarding

Docker menggunakan fitur firewall bawaan dari kernel Linux, yaitu iptables perintah, untuk membuat aturan firewall. Aturan firewall ini mengontrol kapan paket dikirim antara jembatan dan dengan demikian menjadi tersedia untuk wadah yang terpasang ke jembatan tersebut.

Lihatlah bagaimana Docker menyelesaikan penerusan port di bawah kap dengan iptables .

1. Jalankan perintah berikut untuk memulai wadah Ubuntu istimewa (--privileged=true ) dengan akses penuh ke semua sumber daya jaringan di host, termasuk penerusan porta.

docker run -ti --rm --net=host --privileged=true ubuntu bash

2. Selanjutnya, jalankan perintah di bawah ini untuk update daftar paket dan install iptables .

apt update && apt install iptables

3. Jalankan iptables perintah di bawah ini pada wadah Ubuntu istimewa untuk dicantumkan (-L ) nat aturan meja.

iptables -n -L -t nat

Apa yang Anda lihat di bawah hanyalah aturan default yang dikirimkan bersama Ubuntu.

4. Sekarang, jalankan perintah di bawah ini, jalankan Ubuntu container dengan penerusan port ke host Anda pada port 8080 .

docker run -ti --rm -p 8080:8080 ubuntu bash

5. Terakhir, jalankan kembali iptables perintah di bawah ini untuk membuat daftar nat aturan meja.

iptables -n -L -t nat

Perhatikan di bawah bahwa aturan baru ditambahkan, meneruskan semua paket dari port host (8080) ke port container (8080). Anda dapat melihat bahwa mengekspos port di Docker hanyalah penerusan port pada lapisan jaringan.

Membuat Jaringan yang Ditentukan Pengguna

Ujian DCA Docker Anda mungkin meminta Anda membuat jaringan jembatan untuk pengembang. Bagaimana? Menggunakan docker network perintah, Anda dapat membuat jaringan jembatan (jaringan virtual yang ditentukan pengguna). docker network menyediakan cara bagi container di jaringan yang berbeda untuk berkomunikasi.

1. Jalankan docker network perintah di bawah ini untuk membuat jaringan jembatan baru bernama ata-app-net menggunakan bridge pengemudi.

docker network create --driver bridge ata-app-net

2. Selanjutnya, jalankan perintah berikut untuk membuat daftar (ls ) jaringan jembatan di host Anda.

docker network ls

Perhatikan di bawah bahwa jaringan jembatan baru yang ditentukan pengguna bernama ata-app-net telah dibuat.

3. Jalankan perintah di bawah ini untuk melihat (inspect ) detail ata-app-net jaringan jembatan.

docker network inspect ata-app-net

Di bawah, perhatikan bahwa jaringan jembatan ata-app-net memiliki satu subnet (172.21.0.0/16). Subnet ini secara otomatis ditetapkan saat Anda membuat jaringan jembatan. Anda juga dapat melihat driver (jembatan) yang terkait dengan jaringan jembatan.

4. Sekarang, jalankan contoh Docker run ini ( docker run ) perintah di bawah ini untuk menjalankan beberapa wadah alpine pada jaringan jembatan yang ditentukan pengguna Anda untuk mencoba melakukan ping satu sama lain.

docker run -dit --name ata-app1 --network ata-app-net alpine ash

5. Jalankan docker ps perintah untuk membuat daftar container yang sedang berjalan.

docker ps

Seperti yang Anda lihat di bawah, kedua kontainer sekarang sedang berjalan.

6. Jalankan kembali perintah jaringan buruh pelabuhan di bawah ini untuk inspect ata-app-net . Anda jaringan jembatan.

docker network inspect ata-app-net

Anda dapat melihat di bawah bahwa dua kontainer Anda sekarang terhubung ke jaringan jembatan ata-app-net bersama dengan alamat IP dan namanya.

7. Sekarang, jalankan docker container attach di bawah untuk terhubung ke ata-app1 Anda wadah.

docker container attach ata-app1

8. Ping ke ata-app2 untuk memverifikasi bahwa wadah dapat berkomunikasi satu sama lain.

ping ata-app2

9. Selanjutnya, ping google.com untuk memverifikasi bahwa ata-app1 dapat berkomunikasi dengan internet.

ping google.com

10. Terakhir, ulangi langkah tujuh sampai sembilan untuk menghubungkan ke ata-app2 dan ping ata-app1 .

Pastikan untuk menekan CTRL + PQ untuk melepaskan wadah ata-app1 dan tetap menjalankannya. Jika tidak, container akan berhenti, dan saat Anda melakukan ping ata-app1 dari ata-app2, perintah ping akan gagal.

docker container attach ata-app2
ping ata-app1
ping google.com

Di bawah ini, Anda dapat melihat semua paket yang dikirim dan diterima, yang mengonfirmasi bahwa kedua kontainer dapat berkomunikasi satu sama lain dan melalui internet.

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari banyak contoh Docker run ( docker run ) yang dapat Anda gunakan untuk memudahkan penerapan dan pengelolaan aplikasi Anda. Anda sekarang dapat menggunakan Docker secara lebih efektif dengan memahami cara docker run s dan bagaimana Docker menyiapkan jaringan untuk container Anda.

Pada titik ini, Anda sudah tahu bagaimana memanfaatkan contoh Docker run ( docker run ) perintah untuk meningkatkan game DevOps Anda.

Dengan pengetahuan ini, mengapa tidak menerapkan aplikasi Anda secara lebih efisien dan skalabel?


Docker
  1. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  2. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  3. Cara Menjalankan Perintah di Running Docker Container

  1. Instal ModSecurity dengan Apache di Docker Container

  2. Cara Menjalankan Nginx dalam Wadah Docker:Panduan Langkah demi Langkah

  3. Cara Menjalankan MySQL Dalam Wadah Docker

  1. Cara Menggunakan Perintah Docker Run dengan Contoh

  2. Membuat Wadah Server Windows Docker Pertama Anda

  3. Docker Run vs Start vs Create:Perbedaan Dijelaskan