Cara melancarkan bekas dengan Docker mengarang

Cara melancarkan bekas dengan Docker mengarang

Artikel ini akan memperkenalkan Docker mengarang dan menunjukkan cara meletakkannya berfungsi untuk keperluan anda. Kami akan memasangnya, menulis fail ringkas dan melancarkan bekas.

Kami kemudian akan melihat cara melancarkan pelbagai bekas. Kemudian kita akan melihat bagaimana untuk membina imej dan kebelakangan ini cara menggunakan pelbagai fail menyusun untuk melancarkan bekas dalam persekitaran yang berbeza, seperti pembangunan dan pengeluaran, sebagai contoh.

Dalam tutorial ini anda akan belajar:

  • Cara Memasang Docker mengarang
  • Cara Menulis Fail Komposisi Mudah
  • Cara Melaksanakan Perintah-Perintah Docker Untuk Memulakan dan Menghentikan Bekas
  • Cara melancarkan pelbagai bekas
  • Cara Membina Imej Dengan Docker
  • Cara Mengatasi Menggunakan Docker Berbilang Mengarang Fail
Phpmyadmin.

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Ubuntu 18.04
Perisian Docker mengarang
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

Pengenalan



Kita setakat ini melihat bagaimana Docker sangat bagus untuk menguruskan imej dan memulakan bekas. Tetapi kerap aplikasi memerlukan bekas yang berbeza dan berkomunikasi antara satu sama lain. Menghubungkan mereka melalui rangkaian, menjadikan mereka berkongsi jumlah cakera, dan pembolehubah persekitaran lulus dengan mudah boleh menjadi urutan arahan yang sukar untuk mendokumenkan dan mengekalkan dari masa ke masa. Ada yang memasuki docker. Mari mulakan memasangnya dan kemudian tulis fail kumitkan.

Memasang Docker Compose

Di Ubuntu 18.04 Memasang Komposer Docker adalah mudah:

# Apt Pasang Docker-Compose 

Untuk mengujinya dipasang, anda boleh menyemak versi itu:

$ dock-compose -v dock-compose versi 1.17.1, membina tidak diketahui 

Enjin Docker dan Docker mengarang versi penting kerana siaran mereka kerap dan ciri -ciri ditambah dan dikeluarkan. Versi yang ditunjukkan di atas (1.17.1) dikeluarkan pada bulan November 2017. Jika anda memerlukan pelepasan yang lebih baru, anda boleh mengaktifkan repositori Universe Ubuntu dan mendapatkan pakej yang lebih baru, atau muat turun dan memasang pelepasan terkini terus dari laman web Docker Compose:

# curl -l "https: // github.com/docker/compose/releases/muat turun/1.23.2/docker-compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/docker-compose # sudo chmod +x/usr/local/bin/docker-compose 


Docker mengarang fail

Docker Compose membaca fail yaml, yang biasanya dinamakan Docker-compose.yml.

Versi: "3" Perkhidmatan: Apache: Imej: PHP: 7.3 -apache container_name: 'Apache' port: - "80:80" Jilid: - ./www:/var/www/html 
Salinan

Pada mulanya, versi sintaks dimaklumkan sebagai 3. Seterusnya, di bahagian Perkhidmatan, hanya satu bekas yang ditentukan (Apache) dan tag gambar, container_name, pelabuhan, dan jilid digunakan untuk menggambarkan bagaimana ia akan dilaksanakan.

Sekarang buat direktori yang dinamakan www dan jatuhkan ini indeks.html fail di dalam.

  Helo   

Seterusnya, untuk menguji PHP berfungsi hanya menjatuhkan fail ini di dalamnya www.

 


Docker mengarang arahan

The naik Perintah akan menjaga segala -galanya: Muat turun gambar dari Docker Hub jika mereka masih belum wujud di cache tempatan, membina imej tersuai (yang tidak berlaku; kita akan menutup bahagian yang seterusnya) dan mulakan bekas.

$ docker -compose up -d 

The -d suis mengarahkan Docker menyusun untuk menjalankan bekas di latar belakang. Sekiranya nama fail lain digunakan, bukan Docker-compose.yml, ia dapat dimaklumkan dengan -f.

Perhatikan bahawa arahan pelancaran jauh lebih mudah daripada itu Docker Jalankan rakan sejawat. Ia mempunyai dua lagi kelebihan: ia tidak berubah tanpa mengira kandungan fail menyusun, dan jika fail menyusun menentukan lebih daripada satu bekas, semuanya akan dimulakan. Hanya untuk perbandingan, arahan Docker Run akan menjadi:

$ docker run -d --name = 'apache -alone' -p 80:80 -v $ pwd/www:/var/www/html php: 7.3-APACHE 

Kerana sintaks fail menyusun yaml, perkara lekukan. Sekiranya anda mendapat ralat sintaks, periksa sintaks yaml dengan parser dalam talian, seperti ini.

Anda boleh menyemak bekas sedang berjalan.

$ docker ps container Id Image Command created Status Port Names 3937d997e029 php: 7.3-APACHE "Docker-PhP-Entrypoi ..." 8 minit yang lalu sehingga 8 minit 0.0.0.0: 80-> 80/TCP Apache 

Sekarang akses http: // localhost dalam penyemak imbas pilihan anda dan kemudian http: // localhost/phpinfo.php.



Melancarkan pelbagai bekas

Mari kita lihat fail pengarang yang lebih kompleks. Mari kita bayangkan kita akan menyediakan persekitaran tempatan untuk membangunkan aplikasi lampu. Kami memerlukan bekas dengan Apache dan PHP, bekas lain dengan MySQL, dan mungkin bekas phpmyadmin untuk berinteraksi dengan MySQL. The Docker-compose.yml akan jadi:

Versi: "3" Perkhidmatan: Apache: Imej: PHP: 7.3 -apache container_name: 'Apache' Restart: 'Sentiasa' Pelabuhan: - "80:80" - "443: 443" Volum: - ./www:/var/www/html - ./PHP/PHP.Ini:/usr/local/etc/php/php.Ini - ./Tapak yang dibolehkan:/etc/apache2/sites-enabled-Apache-Logs:/var/log/apache2 mysql: Imej: MariaDB: 10.4 container_name: 'mysql' restart: 'selalu' volum: - mysql -data:/var/lib/mysql persekitaran: mysql_root_password: somepassword mysql_database: db_site mysql_user: pengguna mysql_password: phpmyadmin.8 Container_Name: 'Phpmyadmin' Alam Sekitar: PMA_HOST: MySQL PMA_PORT: 3306 port:-'8080: 80' Volum: Apache-Logs: MySQL-Data: 
Salinan

Fail ini melancarkan tiga bekas, masing -masing mempunyai bahagian di bawah perkhidmatan. Perhatikan kami menentukan beberapa pembolehubah persekitaran di bawah persekitaran. The Mulakan semula: Sentiasa Definisi mengarahkan Docker untuk memulakan bekas secara automatik apabila perkhidmatan Docker dimulakan (sekiranya reboot, sebagai contoh).

Perintah untuk memulakan tiga bekas adalah sama seperti dalam contoh mudah sebelumnya. Senang diingat, betul?

$ docker -compose up -d 

Periksa bekas yang dibuat.



$ docker ps container id image command created status port Nama f76ece3508fe phpmyadmin/phpmyadmin: 4.8 "/lari.SH Supervisord ... "20 saat yang lalu sehingga 4 saat 9000/TCP, 0.0.0.0: 8080-> 80/TCP phpmyadmin 69B1B5054F3D MariaDB: 10.4 "Docker-Enrypoint.S ... "20 saat yang lalu Up 6 Seconds 3306/TCP MySQL 6747D7580dac PHP: 7.3-APACHE "Docker-PhP-Entrypoi ..." 2 hari yang lalu sehingga 14 saat 0.0.0.0: 80-> 80/TCP, 0.0.0.0: 443-> 443/TCP Apache 
Salinan

Sangat menarik untuk melihat bahawa bekas dapat berkomunikasi melalui nama mereka dan mengakses port masing -masing tanpa perlu mendedahkan pelabuhan mereka ke tuan rumah. Sebagai contoh, kami tidak mendedahkan port 3306 perkhidmatan MySQL (seperti yang dapat dilihat dalam output di atas), tetapi phpmyadmin dapat mengakses port ini. Untuk mengakses phpmyadmin, pergi ke http: // localhost: 8080 dan log masuk dengan pengguna dan kata laluan yang ditakrifkan dalam perkhidmatan MySQL (pengguna / kata laluan).

Membina gambar dengan Docker mengarang

Sekiranya anda perlu membina imej, bukannya menggunakan yang sedia ada, tambahkan a membina tag. Dalam contoh di bawah, kami memberitahu Docker menulis untuk melihat direktori semasa untuk Dockerfile. Tag gambar akan digunakan untuk menamakan gambar baru.

Versi: "3" Perkhidmatan: Apache: Membina: . Imej: Container-Nama My-Image_name: 'Apache' Restart: 'Sentiasa' Pelabuhan:-"80:80" 
Salinan

Mengatasi menggunakan pelbagai fail mengarang fail

Docker Compose memudahkan untuk menyesuaikan pelancaran bekas untuk persekitaran yang berbeza. Anda hanya perlu membuat fail yang dipanggil override dan melancarkan bekas yang menyatakannya. Mereka akan menimpa definisi sebelumnya yang dibuat di pangkalan mengarang fail.

Contohnya, mari buat fail override yang dinamakan Docker-compose-prod.yml dan tentukan kata laluan yang berbeza untuk mysql.

Versi: "3" Perkhidmatan: mysql: persekitaran: mysql_root_password: somepassword_other mysql_database: db_site_other mysql_user: user_other mysql_password: password_other 
Salinan

Anda boleh menggunakan tuan rumah lain untuk memulakan bekas. Sekiranya anda menggunakan tuan rumah yang sama, ia diperlukan untuk memadam bekas MySQL dan jumlahnya yang berkaitan. Jika tidak, bekas yang ada dengan kelayakan lama akan digunakan.

$ docker stop mysql $ docker rm mysql $ docker volume ls $ docker volume rm directory_mysql-data 

Dan kemudian anda boleh melaksanakan arahan di bawah. Penting untuk menyimpan susunan fail. Pelbagai fail boleh digunakan. Dalam contoh kami, hanya persekitaran seksyen mysql Perkhidmatan akan ditindih.

$ docker-compose -f dock-compose.YML -F Docker-Compose-Prod.yml up -d 

Setelah memeriksa bekas sedang berjalan, cuba mengakses phpmyadmin menggunakan kelayakan baru.

Kesimpulan

Artikel ini memperkenalkan Docker Compose, alat yang berguna untuk mengatur pelancaran pelbagai bekas dalam tuan rumah yang sama. Terdapat banyak kemungkinan dan membaca manual Docker Compose sangat disyorkan. Dalam artikel seterusnya, kami akan meneroka cara untuk mengatur bekas docker di kalangan pelbagai tuan rumah.

Lebih banyak dalam siri artikel Docker ini

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

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Cara membuat timbunan lampu berasaskan Docker menggunakan Docker pada ..
  • Menguasai Gelung Skrip Bash
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Cara Memasang Debian pada bekas Luks yang ada
  • Cara Memasang dan Menyediakan CMS Hantu di Ubuntu
  • Tutorial Debugging GDB untuk Pemula