Isi kandungan:

Bina Imej Docker untuk Raspberry Pi: 7 Langkah
Bina Imej Docker untuk Raspberry Pi: 7 Langkah

Video: Bina Imej Docker untuk Raspberry Pi: 7 Langkah

Video: Bina Imej Docker untuk Raspberry Pi: 7 Langkah
Video: Docker on Raspberry Pi Ep.7 | Portainer UI Tool 2024, November
Anonim
Bina Imej Docker untuk Raspberry Pi
Bina Imej Docker untuk Raspberry Pi

Instruksional ini menunjukkan cara membina Docker Image untuk Raspberry Pi.

Langkah 1: Mengapa Docker?

Anda boleh menggunakan Raspberry Pi (RPi) melakukan banyak perkara, pelayan web kecil, pembantu AI, Robotik … dll.

Banyak projek yang ingin anda cuba, tetapi masalahnya adalah:

Masa Untuk Membina

RPi tidak berminat untuk memproses kuasa, dan pemacu SD / USB menghadkan kelajuan IO. Gunakan apt semua pakej ketergantungan memerlukan satu jam dan membina sumber memerlukan lebih banyak jam. Terutama untuk projek yang berkaitan dengan AI, masa untuk menunggu lebih banyak daripada masa untuk mencuba.

Konflik Versi

Semua orang mencuba banyak projek dalam satu RPi. Apabila anda telah mencuba projek dan ingin beralih ke projek yang lain, anda mungkin mendapati beberapa binaan gagal disebabkan oleh versi pergantungan perpustakaan yang bertentangan dengan projek sebelumnya. Beberapa perpustakaan berhenti berkembang beberapa tahun yang lalu dan bergantung pada beberapa perpustakaan yang sangat lama. Sebaliknya, projek aktif bergantung pada perpustakaan terkini. Kedua-dua projek tidak dapat wujud bersama dalam pemacu SD / USB yang sama ?.

Sandaran Imej

Oleh kerana beberapa projek tidak dapat wujud bersama, beli lebih banyak pemacu SD / USB untuk memastikan setiap imej projek bergantung kepada satu cara. Sekiranya wang tidak terhad ?. Tetapi ini meningkatkan kesukaran pengurusan fail / gambar, kadang-kadang anda memerlukan pertukaran SD / USB dan boot berkali-kali untuk mengetahui apa yang anda mahukan.

Sukar Dikongsi

Semasa anda membina projek anda dan ingin berkongsi sumbernya kepada rakan, rakan anda mungkin mendapat suapan binaan yang gagal. Versi edaran / perpustakaan terlalu lama atau terlalu baru, parameter bangunan dan beberapa muslihat. Anda memerlukan masa untuk menyelesaikan masalah membina orang lain tetapi tidak menyokong projek itu sendiri.

Titik sakit di atas adalah pengalaman saya dalam beberapa tahun ini. Docker dapat menolong sebahagian besarnya.

Docker mula membina dari memilih gambar induk prebuilt. Cth. debian: jessie-slim bermula dari pengedaran berat ringan Debian yang lama; simpul: Permulaan 10-buster-slim dari pengedaran berat Debian dengan Node.js 10 dipasang. Imej prebuilt dapat menjimatkan banyak masa untuk mem-flash gambar, mendapatkan kemas kini dan memasang perpustakaan bergantung. Setiap projek boleh bermula dari versi OS yang berbeza, versi runtime dan versi perpustakaan. Apabila anda selesai membangunkan projek anda sendiri, anda boleh mendorong imej Docker ke hub docker dan berkongsi kepada semua orang. Anda boleh menyimpan semua data projek pada SD / USB yang sama (data harus dibuat sandaran rutin ke media lain). Untuk menjimatkan simpanan tempatan, anda bahkan dapat membersihkan gambar Docker apabila tidak digunakan, bila-bila masa anda boleh menarik kembali dari hub Docker lagi.

Langkah 2: Docker Overhead

Docker menambah satu lapisan virtualisasi, overhead menjadi perhatian. Saya tidak terlalu banyak menguji mengenai overhead Docker. Sebilangan besar hasil Googled menuntut overhead yang sangat rendah dan saya dapati dokumen ini mengenai beberapa penyelidikan yang berkaitan:

domino.research.ibm.com/library/cyberdig.n…

Langkah 3: Pasang Docker

Cukup jalankan:

curl -sSL https://get.docker.com | sh

Ruj:

www.raspberrypi.org/blog/docker-come-to-…

docs.docker.com/get-started/

Langkah 4: Membina Imej Docker

Sila dapatkan panduan rasmi untuk membina gambar pelabuhan:

docs.docker.com/get-started/part2/

Saya mempunyai 2 projek menggunakan Docker, anda mungkin menganggap Dockerfile sebagai rujukan:

BanateCAD memerlukan runtime Lua dan beberapa perpustakaan Lua tambahan. Hanya Lua 5.1 yang boleh serasi dengan semua perpustakaan Lua yang diperlukan tetapi ia adalah produk tahun 2006. Pengedaran Debian terbaru yang dapat membina kejayaan Lua 5.1 ialah Jessie (Versi sebelum kandang lama Debian sekarang). Oleh itu, saya membina Lock 5.1 persekitaran Docker Image untuk menjalankannya

github.com/moononournation/BanateCAD/tree/…

OpenCV adalah projek yang sedang berkembang, kod sumber bergantung pada perpustakaan dan penyusun terkini. Oleh itu, peluang yang sangat tinggi untuk membina gagal, tandatangan kaedah perpustakaan, versi penyusun, konflik kebergantungan… Saya ingin menggunakan opencv4nodejs untuk membuat aplikasi mudah dan tidak memerlukan ciri terkini. Oleh itu, apabila saya menemui kaedah untuk membina kejayaan opencv4nodejs, saya ingin membekukannya ke Docker Image dan melakukan pengekodan aplikasi saya yang sebenarnya

github.com/moononournation/face-aware-phot…

Langkah 5: Pembangunan Membangunkan Kelajuan Vs Gambar Ukuran

Pembangunan Membangunkan Kelajuan Vs Saiz Gambar
Pembangunan Membangunkan Kelajuan Vs Saiz Gambar
Pembangunan Membangunkan Kelajuan Vs Saiz Gambar
Pembangunan Membangunkan Kelajuan Vs Saiz Gambar

Anda mungkin mendapati projek wajah-sedar-foto-osd saya mempunyai 2 versi Dockfile:

github.com/moononournation/face-aware-phot…

Semasa pembangunan, saya suka perintah RUN split sekecil mungkin dan mengatur kemungkinan besar untuk menukar perintah RUN ke langkah terakhir. Jadi untuk setiap perubahan untuk pembangunan, saya dapat menggunakan lapisan binaan sebelumnya sebanyak mungkin dan menjimatkan banyak kelajuan binaan.

Sebaliknya, saya akan menggabungkan semua perintah RUN dalam satu sebelum dilepaskan. lapisan yang lebih rendah dapat mengurangkan saiz Docker Image. Projek face-sadar-photo-osd saya sebagai contoh dapat mengurangkan saiz lebih dari 100 MB.

Langkah 6: Imej Multi Arch

Imej Multi Arch
Imej Multi Arch

Seperti disebutkan sebelumnya, RPi tidak berminat dengan daya pemprosesan. Gunakan gambar RPi build Docker mungkin bukan pilihan yang baik, terutamanya apabila RPi satu-satunya anda menjalankan projek lain.

Gunakan komputer x86 juga dapat membantu anda membina Imej Docker, sila dapatkan maklumat lebih lanjut di sini:

www.docker.com/blog/multi-arch-images/

2 arahan mudah dapat membina x86 dan ARM Docker Image secara selari:

buildx docker create --use

buildx docker buildx --platform linux / amd64, linux / arm -t moononournation / debian-imagemagick-lua-meshlab: 1.0.1 --push.

Multi Arch dapat membina imej multi platform dengan tag gambar Docker yang sama, sehingga projek anda dapat berjalan di mesin yang berbeza dengan lancar. cth.

docker run -it moononournation / debian-imagemagick-lua-meshlab: 1.0.1

Tidak kira anda menjalankan perintah di atas pada RPi atau komputer x86 anda, anda boleh mendapatkan persekitaran runtime Lua.

Langkah 7: Selamat Hari RPi

Anda kini boleh mengembangkan dan berkongsi projek RPi anda dengan lebih mudah!

Disyorkan: