Cara berinteraksi dengan wadah Docker

Cara berinteraksi dengan wadah Docker

Artikel ini memperluas artikel Docker sebelumnya dan menunjukkan cara berinteraksi dengan wadah Docker dengan mengeksekusi perintah di dalam wadah, menginstal perangkat lunak di dalam wadah, memeriksa status kontainer, mengakses wadah menggunakan bash, perubahan yang bertahan menjadi gambar dan menghapus wadah dan gambar yang tidak terpakai.

Dalam tutorial ini Anda akan belajar:

  • Cara menjalankan perintah di dalam wadah
  • Cara menginstal perangkat lunak di dalam wadah
  • Cara memeriksa status kontainer
  • Cara mengakses wadah menggunakan bash
  • Bagaimana bertahan perubahan menjadi gambar
  • Cara menghapus wadah dan gambar yang tidak digunakan
PHP terpasang.

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 Distribusi linux apa pun
Perangkat lunak Buruh pelabuhan
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

Cara berinteraksi dengan wadah Docker

Dalam artikel pertama dari seri ini, Anda belajar konsep Docker dan beberapa perintah dasar dan melihat bagaimana Anda dapat dengan mudah menjalankan perangkat lunak dengan cara yang terkotak, tanpa menyentuh konfigurasi sistem operasi host Anda. Sekarang mari kita masuk lebih dalam, masuk ke dalam wadah yang berjalan dan mengeksekusi beberapa perintah.



Mengeksekusi perintah di dalam wadah berjalan

Di artikel sebelumnya, Anda memulai wadah Apache. Gambar yang mendasarinya tidak menginstal PHP, jadi itu hanya mampu menyajikan halaman html statis. Mari kita dapatkan wadah dengan Apache dan PHP terpasang di atasnya. Jika Anda bertanya -tanya, ada gambar yang siap digunakan dengan Apache dan PHP terpasang, dan dapat ditemukan di Docker Hub. Kami melakukan ini hanya untuk menunjukkan bagaimana suatu gambar dapat disesuaikan dengan kebutuhan Anda.

Jadi, mari kita mulai instance Debian menggunakan baris perintah serupa dari artikel sebelumnya, tetapi dengan dua perbedaan: mari kita beri nama (--Nama debian_container), jadi kita bisa merujuknya nanti, dan mengalokasikan terminal untuk menjalankannya (-dia).

$ docker run -it --name debian_container -d -p 8000: 80 -v "$ pwd":/var/www/html debian 

Kami dapat berinteraksi dengan wadah Docker yang sedang berjalan. Anda telah diberitahu sebelumnya bahwa wadah berbagi kernel yang sama dengan sistem operasi host. Mari kita periksa.

$ Docker Exec debian_container uname -A 

Perintah Docker Exec Di atas menjalankan perintah yang diberikan di dalam wadah dan menunjukkan outputnya.

Semua perintah Docker memiliki bantuan terkait, oleh karena itu kita dapat melihat opsi Docker Exec menerima:

$ docker exec --help 

Sekarang Anda dapat bermain -main dengan perintah lain:

$ docker exec debian_container ls -l $ docker eksekutif debian_container pwd $ docker eksekutif debian_container whoami $ docker eksekutif debian_container cat /etc /edisi 
Menyalin

Dalam perintah terakhir ini, kami belajar bahwa wadah menjalankan Debian 9, meskipun sistem operasi mesin Anda. Seperti yang disebutkan sebelumnya, sistem operasi host dan wadah hanya berbagi kernel.

Jika Anda mencoba tetapi tidak dapat menjalankan perintah di dalam wadah, mungkin tidak ada. Gambar (karena semua gambar lainnya) dibangun dari pengaturan Debian minimal, jadi alat tambahan apa pun harus diinstal. Itu mencapai dua tujuan: ukuran disk yang lebih kecil dan keamanan yang lebih baik karena lebih sedikit perangkat lunak berarti lebih sedikit bug yang harus dieksploitasi.

Sekarang, mari kita masuk ke dalam wadah.

$ docker exec -it debian bash root@b5c694a02248:/usr/local/apache2# 
Menyalin

Perhatikan bahwa prompt telah berubah dan sekarang Anda adalah pengguna akar di dalam wadah (B5C694A02248 adalah nama host di dalam wadah) di dalam shell bash.



Menginstal perangkat lunak ke dalam wadah

Kami sekarang memiliki shell di dalam wadah dengan pengguna akar. Karena ini adalah versi Debian yang dipangkas, bahkan tidak ada perintah atas Dan ps. Mari kita menginstal.

# Perbarui APT # Instal Procps App 
Menyalin

Anda dapat melihat dengan apa atas Dan ps -ef.

root@f5b423465e03:/# ps -ef uid pid ppid c stime tty time cmd root 1 0 0 19:46 poin/0 00:00:00 root bash 42 0 0 19:49 poin/1 00:00:00 Bash Root 42 310 42 0 19:53 poin/1 00:00:00 ps -ef root@f5b423465e03:/# 
Menyalin

Ya, itu hemat. Wadah Docker biasanya memiliki jumlah minimum absolut dari proses pelaksanaan. Untuk meninggalkan shell dan kembali ke sistem operasi host Anda, cukup keluar dari bash (ketik KELUAR atau Ctrl+d).

Perhatikan bahwa banyak file telah diunduh oleh Pembaruan yang tepat Dan instalasi yang tepat. Mereka semua ada di disk wadah yang sedang berjalan. Mereka masih ada jika wadah dihentikan dan dimulai lagi (Docker Stop debian_container; Docker mulai debian_container). Tetapi mereka tidak ada dalam gambar. Itu berarti, jika Anda menghapus wadah ini (Docker RM Debian_Container) dan mulai wadah baru, Anda harus menginstal paket procps lagi. Juga, jika Anda memulai gambar Debian di host lain, Anda juga harus menginstal procps lagi. Kita akan lihat nanti bagaimana bertahan gambar dengan modifikasi disk, jadi lain kali Anda memulai wadah, semua perangkat lunak akan diinstal.

Sekarang, mari kita dapatkan Apache dan PHP. Perintah di bawah ini akan memakan waktu lama untuk menyelesaikan dan akan mengunduh dan menginstal semua paket ketergantungan, termasuk Apache dan PHP - ini akan memakan waktu beberapa menit. Pada akhirnya, mulailah Apache dan akses localhost di port 8000 di browser web Anda (http: // localhost: 8000). Anda akan melihat halaman Debian default untuk Apache.

# Apt Install Libapache2-Mod-PHP # Service Apache2 Start 
Menyalin

Halaman Default Apache Debian.

Sekarang mari kita konfirmasi bahwa PHP ada di sana. Anda bisa pergi ke /var/ww/html Di dalam wadah, atau keluar dari cangkang wadah dan ketik dari direktori saat ini di sistem operasi host Anda (ingat kami memetakan direktori arus ke dalam /var/www/html di dalam wadah?)

$ echo "> phpinfo.php 

Dan voila (http: // localhost: 8000/phpinfo.php).

Informasi PHP.

Berkomitmen untuk sebuah gambar

Seperti yang disebutkan sebelumnya, perubahan yang dilakukan pada wadah bertahan selama wadah tetap ada, dan wadah diharapkan sesaat - mereka dibuat untuk dihancurkan. Modifikasi yang tahan lama harus dibuat menjadi gambar.

Artikel berikutnya akan menunjukkan cara membuat gambar yang disesuaikan dengan cara yang elegan (dan sangat disarankan), menggunakan DockerFile. Untuk saat ini, Anda akan belajar peretasan yang dapat membantu dalam situasi tertentu di mana tidak mungkin atau diinginkan untuk menulis DockerFile. Memperluas gambar dengan file Docker jika lebih disukai karena dapat dengan mudah diedit saat melakukan status kontainer ke gambar baru tidak meninggalkan jejak perubahan yang dibuat kecuali analisis lapisan file file yang melelahkan dilakukan.

Perintah Docker Commit memiliki dua parameter: nama kontainer Dan Nama gambar baru Dan itu akan membuat gambar baru pada cache gambar lokal berdasarkan wadah. Dalam perintah di bawah ini, debian_container adalah nama wadah dan Debian-Apache-PHP adalah nama gambar baru.

$ docker commit debian_container debian-apache-php sha256: 3f01c0c71539c4dc6dfd7483ff68c41143b7e9aeb52de4a9892c8cc13eda236 
Menyalin

Mendaftarkan gambar di cache host.

$ docker gambar tag repositori ID dibuat ukuran debian-apache-php terbaru 3f01c0c71539 10 menit yang lalu 235MB debian BE2868BebABA 11 hari yang lalu 101MB 
Menyalin

Perhatikan bahwa ada gambar baru di host Anda. Salah satu karakteristik menarik dari manajemen gambar dan wadah adalah bahwa Docker hanya akan menyimpan perbedaan keadaan disk antara gambar saat ini dan gambar yang menjadi dasarnya, jadi tidak ada ruang disk yang berlebihan yang terbuang sia -sia. Untuk ini, Docker menggunakan sistem file berlapis yang menggunakan pendekatan copy-on-write: Ketika wadah baru dibuat, ia mewarisi disk gambar yang sama dan, karena modifikasi dibuat pada file, mereka ditulis dalam lapisan baru.



Memeriksa wadah

Docker memelihara banyak informasi tentang objek Docker. Perintah Periksa Docker digunakan untuk melihatnya.

$ docker memeriksa debian_container 

Perintah ini akan mengambil objek JSON dengan puluhan baris yang merinci status kontainer: ID kontainer, tanggal yang dibuat, status, gambar, jalur log, port, volume, jaringan, dll.

Wadah dan gambar pemangkasan

Setelah bermain -main dengan wadah dan gambar, disk host pada akhirnya akan terisi dengan entitas yang ditinggalkan yang perlu dibersihkan sehingga Anda dapat merebut kembali ruang disk.

Perintah Docker Container Prune akan menghapus semua wadah yang berhenti. Hati -hati: Setelah wadah dihapus, keadaan terkait apa pun hilang. Membuat cadangan atau melakukan perubahan pada gambar sebelumnya.

Perintah Gambar Docker Prune akan menghapus semua gambar yang tidak digunakan. Kami belum membangun gambar, tetapi perintah ini akan berguna di artikel berikutnya.

Kesimpulan

Dalam artikel ini, Anda belajar bagaimana berinteraksi dengan wadah dan bagaimana melakukan perubahan pada gambar, meskipun pendekatan ini tidak disarankan.

Di artikel berikutnya, Anda akan membuat gambar Anda sendiri dengan DockerFile, cara yang disarankan untuk menyesuaikan gambar Docker.

Lainnya dalam seri artikel Docker ini

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

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Menguasai loop skrip bash
  • Cara membuat tumpukan lampu berbasis Docker menggunakan Docker di…
  • Linux Apache Tidak Melaksanakan File PHP: Solusi
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Instalasi OpenLitespeed WordPress
  • Cara menginstal php di ubuntu linux
  • Instalasi ampache raspberry pi