Android

Docker menjalankan perintah dengan contoh

Building Small Containers (Kubernetes Best Practices)

Building Small Containers (Kubernetes Best Practices)

Daftar Isi:

Anonim

Docker adalah platform yang memungkinkan Anda untuk mengembangkan, menguji, dan menggunakan aplikasi sebagai wadah portabel dan mandiri yang beroperasi hampir di mana saja.

Perintah docker run membuat wadah dari gambar yang diberikan dan memulai wadah menggunakan perintah yang diberikan. Ini adalah salah satu perintah pertama yang harus Anda ketahui ketika mulai bekerja dengan Docker., kami akan menggunakan gambar Nginx resmi untuk menunjukkan berbagai cara menjalankan wadah Docker.

Docker Run Command

Perintah docker run mengambil bentuk berikut:

docker run IMAGE

Nama gambar dari mana wadah harus dibuat adalah satu-satunya argumen yang diperlukan untuk docker run perintah docker run . Jika gambar tidak ada di sistem lokal, gambar itu diambil dari registri.

Jika tidak ada perintah yang ditentukan, perintah yang ditentukan dalam CMD atau instruksi ENTRYPOINT dijalankan ketika menjalankan wadah.

Mulai dari versi 1.13, Docker CLI telah direstrukturisasi, dan semua perintah telah dikelompokkan di bawah objek yang berinteraksi dengannya.

Karena perintah run berinteraksi dengan kontainer, sekarang perintah sub- docker container . Sintaks perintah baru adalah sebagai berikut:

docker container run IMAGE

Sintaksis lama, pra 1.13 masih didukung. Di bawah tenda, perintah docker run adalah alias untuk docker container run . Pengguna didorong untuk menggunakan sintaks perintah baru.

Daftar semua opsi docker container run dapat ditemukan di halaman dokumentasi Docker.

Jalankan Container di Foreground

Secara default, ketika tidak ada opsi yang disediakan untuk docker run perintah docker run , proses root dimulai di latar depan. Ini berarti bahwa input standar, output, dan kesalahan dari proses root melekat pada sesi terminal.

docker container run nginx

Output dari proses nginx akan ditampilkan di terminal Anda. Karena, tidak ada koneksi ke server web, terminal kosong.

Untuk menghentikan wadah, hentikan proses Nginx yang sedang berjalan dengan menekan CTRL+C

Jalankan Kontainer dalam Mode Terpisah

Agar wadah tetap beroperasi saat Anda keluar dari sesi terminal, mulailah dalam mode terpisah. Ini mirip dengan menjalankan proses Linux di latar belakang.

Gunakan opsi -d untuk memulai wadah terpisah:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Kontainer yang terlepas akan berhenti ketika proses root dihentikan.

Anda dapat membuat daftar kontainer yang sedang berjalan menggunakan perintah docker container ls .

Untuk melampirkan terminal Anda ke proses root container terpisah, gunakan perintah docker container attach .

Hapus Kontainer Setelah Keluar

Secara default, ketika wadah keluar, sistem file-nya tetap pada sistem host.

Opsi --rm memberitahu perintah docker run untuk menghapus wadah ketika keluar secara otomatis:

docker container run --rm nginx

Gambar Nginx mungkin bukan contoh terbaik untuk membersihkan sistem file wadah setelah wadah keluar. Opsi ini biasanya digunakan pada wadah latar depan yang melakukan tugas jangka pendek seperti tes atau cadangan basis data.

Tetapkan Nama Wadah

Di Docker, setiap wadah diidentifikasi dengan UUID dan namanya. Secara default, jika tidak diatur secara eksplisit, nama wadah secara otomatis dihasilkan oleh daemon Docker.

Gunakan opsi --name untuk menetapkan nama khusus ke wadah:

docker container run -d --name my_nginx nginx

Nama wadah harus unik. Jika Anda mencoba memulai wadah lain dengan nama yang sama, Anda akan mendapatkan kesalahan yang mirip dengan ini:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Jalankan docker container ls -a untuk mendaftar semua kontainer, dan lihat namanya:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Nama-nama yang bermakna berguna untuk merujuk wadah di dalam jaringan Docker atau ketika menjalankan perintah docker CLI.

Penerbitan Port Kontainer

Secara default, jika tidak ada port yang diterbitkan, proses yang berjalan di wadah hanya dapat diakses dari dalam wadah.

Menerbitkan port berarti memetakan port kontainer ke port mesin host sehingga port tersedia untuk layanan di luar Docker.

Untuk mempublikasikan port gunakan opsi -p sebagai berikut:

-p host_ip:host_port:container_port/protocol

  • Jika tidak ada host_ip yang ditentukan, host_ip adalah host_ip . Jika tidak ada protocol yang ditentukan, standarnya adalah TCP. Untuk mempublikasikan banyak port, gunakan beberapa opsi -p .

Untuk memetakan TCP port 80 (nginx) dalam container to port 8080 pada antarmuka host host, Anda akan menjalankan:

docker container run --name web_server -d -p 8080:80 nginx

Anda dapat memverifikasi bahwa port diterbitkan dengan membuka http://localhost:8080 di browser Anda atau menjalankan perintah curl berikut pada host Docker:

curl -I

Outputnya akan terlihat seperti ini:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Berbagi Data (Mounting Volume)

Ketika sebuah wadah dihentikan, semua data yang dihasilkan oleh wadah tersebut dihapus. Volume Docker adalah cara yang disukai untuk membuat data tetap ada dan membagikannya di berbagai wadah.

Untuk membuat dan mengelola volume, gunakan opsi -p sebagai berikut:

-v host_src:container_dest:options

  • host_src dapat menjadi path absolut ke file atau direktori pada host atau volume bernama. container_dest adalah path absolut ke file atau direktori pada container. Pilihan dapat rw (baca-tulis) dan ro (hanya baca)). Jika tidak ada opsi yang ditentukan, defaultnya adalah rw .

Untuk menjelaskan cara kerjanya, mari buat direktori di host dan letakkan file index.html di dalamnya:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Selanjutnya, public_html direktori public_html ke /usr/share/nginx/html dalam wadah:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Alih-alih menentukan path absolut ke direktori public_html , kami menggunakan perintah $(pwd) , yang mencetak direktori kerja saat ini.

Sekarang, jika Anda mengetik http://localhost:8080 di browser Anda, Anda akan melihat konten file index.html . Anda juga dapat menggunakan curl :

curl

Testing Docker Volumes

Jalankan Kontainer secara Interaktif

Saat berurusan dengan proses interaktif seperti bash , gunakan opsi -i dan -t untuk memulai wadah.

Opsi -it memberitahu Docker untuk menjaga input standar terpasang ke terminal dan mengalokasikan pseudo-tty:

docker container run -it nginx /bin/bash

Bash shell penampung akan dilampirkan ke terminal, dan prompt perintah akan berubah:

root@1da70f1937f5:/#

Sekarang, Anda dapat berinteraksi dengan shell penampung dan menjalankan perintah apa pun di dalamnya.

Dalam contoh ini, kami memberikan perintah ( /bin/bash ) sebagai argumen untuk docker run perintah docker run yang dieksekusi alih-alih yang ditentukan dalam Dockerfile.

Kesimpulan

Docker adalah standar untuk pengemasan dan penerapan aplikasi dan komponen penting CI / CD, otomatisasi, dan DevOps.

Perintah docker container run digunakan untuk membuat dan menjalankan container Docker.

buruh pelabuhan