Cara Berinteraksi dengan Bekas Docker

Cara Berinteraksi dengan Bekas Docker

Artikel ini memanjangkan artikel Docker sebelumnya dan menunjukkan cara berinteraksi dengan bekas Docker dengan melaksanakan arahan di dalam bekas, memasang perisian di dalam bekas, memeriksa status kontena, mengakses bekas menggunakan bash, berterusan perubahan ke dalam imej dan mengeluarkan bekas dan imej yang tidak digunakan.

Dalam tutorial ini anda akan belajar:

  • Cara melaksanakan arahan di dalam bekas
  • Cara memasang perisian di dalam bekas
  • Cara memeriksa status kontena
  • Cara mengakses bekas menggunakan bash
  • Bagaimana untuk meneruskan perubahan menjadi gambar
  • Cara Menghapus Bekas dan Imej yang Tidak Digunakan
PHP dipasang.

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Mana -mana taburan Linux
Perisian Docker
Yang lain Akses istimewa ke sistem linux anda sebagai akar atau melalui sudo perintah.
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Cara Berinteraksi dengan Bekas Docker

Dalam artikel pertama siri ini, anda mempelajari konsep Docker dan beberapa arahan asas dan melihat bagaimana anda dapat dengan mudah menjalankan perisian dengan cara yang dikomentari, tanpa menyentuh konfigurasi sistem operasi tuan rumah anda. Sekarang mari kita pergi lebih mendalam, masuk ke dalam bekas yang sedang berjalan dan melaksanakan beberapa arahan.



Melaksanakan arahan di dalam bekas yang sedang berjalan

Dalam artikel sebelumnya, anda memulakan bekas Apache. Imej yang mendasari tidak dipasang PHP, jadi hanya mampu melayani halaman HTML statik. Mari kita dapatkan bekas dengan Apache dan PHP dipasang di atasnya. Sekiranya anda tertanya -tanya, ada gambar yang sedia digunakan dengan kedua -dua Apache dan PHP dipasang, dan mereka boleh didapati di Docker Hub. Kami melakukan ini hanya untuk menunjukkan bagaimana imej dapat disesuaikan dengan keperluan anda.

Oleh itu, mari kita mulakan contoh Debian menggunakan baris arahan yang serupa dengan artikel sebelumnya, tetapi dengan dua perbezaan: mari kita berikan nama (--Nama debian_container), jadi kita boleh merujuknya kemudian, dan memperuntukkan terminal untuk dijalankan (-ia).

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

Kita boleh berinteraksi dengan bekas Docker yang berjalan. Anda telah diberitahu sebelum ini bahawa bekas berkongsi kernel yang sama dengan sistem operasi tuan rumah. Mari kita periksa.

$ docker exec debian_container uname -a 

Perintah Docker Exec di atas melaksanakan arahan yang diberikan di dalam bekas dan tunjukkan output itu.

Semua arahan Docker mempunyai bantuan yang berkaitan, oleh itu kita dapat melihat pilihannya Docker Exec Menerima:

$ Docker Exec -Help 

Sekarang anda boleh bermain -main dengan arahan lain:

$ docker exec debian_container ls -l $ docker exec debian_container pwd $ docker exec debian_container whoami $ docker exec debian_container Cat /etc /isu 
Salinan

Dalam perintah terakhir ini, kami mengetahui bahawa bekas sedang menjalankan Debian 9, walaupun sistem operasi mesin anda. Seperti yang dinyatakan sebelum ini, sistem operasi tuan rumah dan kontena hanya berkongsi kernel.

Sekiranya anda mencuba tetapi tidak dapat melaksanakan arahan di dalam bekas, mungkin tidak ada. Imej (seperti semua imej lain) dibina dari persediaan Debian yang minimum, jadi alat tambahan mesti dipasang. Ia mencapai dua objektif: saiz cakera yang lebih kecil dan keselamatan yang lebih baik kerana kurang perisian bermakna bug yang lebih sedikit untuk dieksploitasi.

Sekarang, mari masuk ke dalam bekas.

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

Perhatikan bahawa arahan telah berubah dan sekarang anda pengguna akar di dalam bekas (B5C694A02248 adalah nama hos di dalam bekas) di dalam shell bash.



Memasang perisian ke dalam bekas

Kami kini mempunyai cangkang di dalam bekas dengan pengguna akar. Oleh kerana ini adalah versi Debian yang dipotong, bahkan tidak ada arahan Atas dan ps. Mari kita pasangkannya.

# Apt Update # Apt Pasang Procps 
Salinan

Anda dapat melihat apa yang sedang berjalan Atas dan ps -ef.

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

Ya, itu berjimat. Bekas Docker biasanya mempunyai bilangan minimum proses yang melaksanakan. Untuk meninggalkan cangkang dan kembali ke sistem operasi tuan rumah anda, hanya keluar bash (jenis keluar atau ctrl+d).

Perhatikan bahawa banyak fail telah dimuat turun oleh kemas kini apt dan pemasangan apt. Mereka semua wujud dalam cakera bekas yang sedang berjalan. Mereka masih wujud jika bekas dihentikan dan dimulakan lagi (Docker Stop Debian_Container; Docker Mula Debian_Container). Tetapi mereka tidak wujud dalam gambar. Ini bermaksud, jika anda mengeluarkan bekas ini (docker rm debian_container) dan mulakan bekas baru, anda perlu memasang pakej procps sekali lagi. Juga, jika anda memulakan imej Debian di tuan rumah yang lain, anda juga perlu memasang procps sekali lagi. Kami akan melihat kemudian bagaimana untuk meneruskan imej dengan pengubahsuaian cakera, jadi pada masa akan datang anda memulakan bekas, semua perisian akan dipasang.

Sekarang, mari kita dapatkan Apache dan PHP dipasang. Perintah di bawah akan mengambil masa yang lama untuk menyelesaikan dan akan memuat turun dan memasang semua pakej ketergantungan, termasuk Apache dan PHP - ia akan mengambil beberapa minit. Akhirnya, mulakan Apache dan mengakses localhost di port 8000 di pelayar web anda (http: // localhost: 8000). Anda akan melihat halaman debian lalai untuk Apache.

# Apt Pasang Libapache2-Mod-PhP # Service Apache2 Mula 
Salinan

Halaman lalai Apache Debian.

Sekarang mari kita sahkan bahawa php ada. Anda boleh pergi ke /var/ww/html di dalam bekas, atau keluar dari shell kontena dan taip dari direktori semasa dalam sistem operasi tuan rumah anda (ingat kami memetakan direktori semasa /var/www/html di dalam bekas?)

$ echo "> phpinfo.php 

Dan voilà (http: // localhost: 8000/phpinfo.php).

Maklumat PHP.

Melakukan gambar

Seperti yang dinyatakan sebelum ini, perubahan yang dibuat kepada bekas berterusan selagi bekas itu berterusan, dan bekas dijangka menjadi tidak lama lagi - mereka dibuat dimusnahkan. Pengubahsuaian tahan lama harus dijadikan gambar.

Artikel seterusnya akan menunjukkan cara membuat imej yang disesuaikan dengan cara yang elegan (dan sangat disyorkan), menggunakan Dockerfile. Buat masa ini, anda akan belajar hack yang dapat membantu dalam situasi tertentu di mana tidak mungkin atau wajar untuk menulis fail docker. Memperluas gambar dengan fail docker jika disukai kerana ia boleh diedit dengan mudah semasa melakukan keadaan kontena ke imej baru tidak meninggalkan kesan perubahan yang dibuat kecuali analisis lapisan sistem fail yang susah payah dilakukan.

Perintah Docker komit mempunyai dua parameter: nama kontena dan Nama gambar baru Dan ia akan membuat imej baru pada cache imej tempatan berdasarkan bekas. Dalam arahan di bawah, debian_container adalah nama kontena dan Debian-APACHE-PHP adalah nama gambar baru.

$ docker komit debian_container debian-apache-php sha256: 3f01c0c71539c4dc6dfd7483ff68c411143b7eeb5aeb52de4a9892c8cc136eda236 
Salinan

Menyenaraikan gambar di cache tuan rumah.

$ Docker Images Repository Tag Id Id dicipta Saiz Debian-Apache-PHP Terkini 3F01C0C71539 10 minit yang lalu 235MB Debian terbaru BE2868BEBABA 11 hari yang lalu 101MB 
Salinan

Perhatikan bahawa terdapat imej baru di tuan rumah anda. Satu ciri menarik imej dan pengurusan kontena ialah Docker hanya akan menyimpan perbezaan keadaan cakera antara imej semasa dan imej yang berdasarkan, jadi tidak ada ruang cakera yang berlebihan yang dibazirkan. Untuk ini, Docker menggunakan sistem fail berlapis yang menggunakan pendekatan salinan-on-write: Apabila bekas baru dicipta, ia mewarisi cakera yang sama dari imej dan, sebagai pengubahsuaian dibuat untuk fail, mereka ditulis dalam lapisan baru.



Memeriksa bekas

Docker mengekalkan banyak maklumat mengenai objek Docker. Perintah Memeriksa Docker digunakan untuk melihatnya.

$ docker periksa debian_container 

Perintah itu akan mengambil objek JSON dengan puluhan baris yang memperincikan status kontena: ID kontena, Tarikh Dibuat, Negeri, Imej, Laluan Log, Port, Jilid, Rangkaian, dll.

Bekas pemangkasan dan gambar

Selepas bermain -main dengan bekas dan imej, cakera tuan rumah akhirnya akan mengisi dengan entiti yang ditinggalkan yang perlu dibersihkan supaya anda dapat menuntut semula ruang cakera.

Perintah Docker Container Prune akan membuang semua bekas yang dihentikan. Berhati -hati: Setelah bekas dikeluarkan, keadaan yang berkaitan hilang. Membuat sandaran atau komited perubahan pada gambar sebelum ini.

Perintah Docker Image Prune akan memadam semua gambar yang tidak digunakan. Kami belum membina gambar, tetapi arahan ini berguna dalam artikel seterusnya.

Kesimpulan

Dalam artikel ini, anda belajar bagaimana untuk berinteraksi dengan bekas dan bagaimana untuk melakukan perubahan kepada imej, walaupun pendekatan ini tidak disyorkan.

Dalam artikel seterusnya, anda akan membuat gambar anda sendiri dengan Dockerfile, cara yang disyorkan untuk menyesuaikan gambar Docker.

Lebih banyak dalam siri artikel Docker ini

  • Pengenalan tangan kepada bekas Docker
  • Cara menyesuaikan gambar Docker dengan Dockerfiles

Tutorial Linux Berkaitan:

  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Menguasai Gelung Skrip Bash
  • Cara membuat timbunan lampu berasaskan Docker menggunakan Docker pada ..
  • Linux Apache Tidak Melaksanakan Fail PHP: Penyelesaian
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Pemasangan WordPress OpenLiteSpeed
  • Cara memasang PHP di Ubuntu Linux
  • Pemasangan ampache raspberry pi