Android

Docker menjalankan perintah dengan contoh

Cara Membuat / Build Docker Image | Docker Tutorial Bahasa Indonesia

Cara Membuat / Build Docker Image | Docker Tutorial Bahasa Indonesia

Isi kandungan:

Anonim

Docker adalah platform yang membolehkan anda membangun, menguji, dan menggunakan aplikasi sebagai bekas mudah alih, mandiri yang berjalan hampir di mana saja.

Perintah docker run membuat sebuah bekas dari imej yang diberikan dan memulakan kontena menggunakan arahan yang diberikan. Ini adalah salah satu perintah pertama yang perlu anda kenali ketika mula bekerja dengan Docker., kami akan menggunakan imej rasmi Nginx untuk menunjukkan pelbagai cara untuk menjalankan bekas Docker.

Perintah Jalankan Docker

Perintah yang docker run mengambil bentuk berikut:

docker run IMAGE

Nama imej dari mana bekas harus dicipta adalah satu-satunya hujah yang diperlukan untuk arahan docker run . Jika imej tidak ada pada sistem tempatan, ia akan ditarik dari pendaftaran.

Sekiranya tiada arahan ditentukan, arahan yang dinyatakan dalam arahan CMD atau ENTRYPOINT dijalankan semasa menjalankan bekas.

Bermula dari versi 1.13, Docker CLI telah disusun semula, dan semua arahan dikumpulkan di bawah objek yang mereka berinteraksi.

Memandangkan arahan run berinteraksi dengan bekas, kini ia merupakan docker container . Sintaks perintah baru adalah seperti berikut:

docker container run IMAGE

Yang lama, pra 1.13 sintaks masih disokong. Di bawah tudung, arahan docker run adalah alias kepada docker container run . Pengguna digalakkan untuk menggunakan sintaks arahan baru.

Senarai semua pilihan docker container run boleh didapati di halaman dokumentasi Docker.

Jalankan Container di Foreground

Secara lalai, apabila tiada pilihan diberikan kepada arahan docker run , proses root dimulakan di latar depan. Ini bermakna input, output, dan kesilapan standard dari proses akar dilampirkan pada sesi terminal.

docker container run nginx

Output proses nginx akan dipaparkan pada terminal anda. Oleh kerana, tiada sambungan ke pelayan web, terminal kosong.

Untuk menghentikan bekas, tamatkan proses Nginx yang sedang berjalan dengan menekan CTRL+C

Jalankan Container dalam Mod Terterus

Untuk memastikan bekas berfungsi semasa anda keluar dari sesi terminal, mulailahnya dalam mod berasingan. Ini serupa dengan menjalankan proses Linux di latar belakang.

Gunakan pilihan -d untuk memulakan bekas terpisah:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Bekas berasingan akan berhenti apabila proses akar ditamatkan.

Anda boleh menyenaraikan kontena yang sedang berjalan menggunakan perintah docker container ls .

Untuk melampirkan terminal anda kepada proses akar kontena yang terpisah, gunakan perintah docker container attach .

Keluarkan Container Selepas Keluar

Secara lalai, apabila keluar bekas, sistem failnya tetap pada sistem tuan rumah.

Pilihan --rm memberitahu arahan docker run --rm untuk mengeluarkan bekas ketika ia keluar secara automatik:

docker container run --rm nginx

Imej Nginx mungkin bukan merupakan contoh terbaik untuk membersihkan sistem fail bekas selepas bekas keluar. Pilihan ini biasanya digunakan pada bekas latar depan yang melakukan tugas jangka pendek seperti ujian atau backup pangkalan data.

Tetapkan Nama Kontena

Dalam Docker, setiap bekas dikenal pasti oleh UUID dan namanya. Secara lalai, jika tidak ditetapkan dengan jelas, nama kontena dihasilkan secara automatik oleh Docker daemon.

Gunakan pilihan nama - nama untuk memberikan nama tersuai kepada bekas:

docker container run -d --name my_nginx nginx

Nama kontena mestilah unik. Jika anda cuba untuk memulakan bekas lain dengan nama yang sama, anda akan mendapat ralat yang serupa 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 menyenaraikan semua bekas, dan lihat nama mereka:

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 kontena dalam rangkaian Docker atau semasa menjalankan arahan CLI docker.

Penerbitan Pelabuhan Container

Secara lalai, jika tiada pelabuhan diterbitkan, proses yang berjalan di dalam bekas boleh diakses hanya dari dalam bekas.

Pelabuhan penerbitan bermaksud memetakan pelabuhan kontena ke port mesin tuan rumah supaya pelabuhan tersedia untuk perkhidmatan di luar Docker.

Untuk menerbitkan port, gunakan pilihan -p seperti berikut:

-p host_ip:host_port:container_port/protocol

  • Sekiranya tiada host_ip ditentukan, ia menjadi lalai kepada 0.0.0.0 . Sekiranya tiada protocol yang ditetapkan, ia lalai kepada TCP. Untuk menerbitkan beberapa port, gunakan pelbagai pilihan -p .

Untuk memetakan pelabuhan TCP 80 (nginx) di dalam bekas ke port 8080 pada antara muka localhost tuan rumah, anda akan menjalankan:

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

Anda boleh mengesahkan bahawa port diterbitkan dengan membuka http://localhost:8080 pada penyemak imbas anda atau menjalankan perintah curl berikut pada hos Docker:

curl -I

Output akan kelihatan 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

Data Perkongsian (Volume Pemasangan)

Apabila bekas dihentikan, semua data yang dihasilkan oleh bekas dikeluarkan. Volum Docker adalah cara yang lebih baik untuk membuat data berterusan dan membaginya di beberapa bekas.

Untuk membuat dan mengurus jumlah, gunakan pilihan -p seperti berikut:

-v host_src:container_dest:options

  • host_src boleh menjadi jalan mutlak untuk fail atau direktori pada host atau volume bernama. Container_dest adalah jalan mutlak untuk file atau direktori pada container.Options dapat rw (read-write) dan ro (read-only). Sekiranya tiada pilihan ditentukan, ia mungkir kepada rw .

Untuk menjelaskan bagaimana ini berfungsi, mari buat direktori di host dan letakkan index.html file di dalamnya:

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

Seterusnya, masukkan direktori public_html ke dalam /usr/share/nginx/html dalam bekas:

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

Daripada menentukan laluan mutlak ke direktori public_html , kami menggunakan arahan $(pwd) , yang mencetak direktori kerja semasa.

Sekarang, jika anda menaip http://localhost:8080 dalam pelayar anda, anda harus melihat kandungan fail index.html . Anda juga boleh menggunakan curl :

curl

Testing Docker Volumes

Jalankan Container Interactively

Apabila berurusan dengan proses interaktif seperti bash , gunakan pilihan -i dan -t untuk memulakan bekas.

Opsyen -it memberitahu Docker untuk memastikan input standard dilampirkan pada terminal dan memperuntukkan pseudo-tty:

docker container run -it nginx /bin/bash

Kotak Bash bekas akan dilampirkan ke terminal, dan arahan arahan akan berubah:

root@1da70f1937f5:/#

Kini, anda boleh berinteraksi dengan shell bekas dan menjalankan sebarang arahan di dalamnya.

Dalam contoh ini, kami memberikan arahan ( /bin/bash ) sebagai hujah kepada arahan docker run yang dijalankan yang bukannya yang dinyatakan dalam Dockerfile.

Kesimpulannya

Docker adalah standard untuk pembungkusan dan penggunaan aplikasi dan komponen penting CI / CD, automasi, dan DevOps.

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

docker