Daftar Isi:

Bangun Gambar Docker untuk Raspberry Pi: 7 Langkah
Bangun Gambar Docker untuk Raspberry Pi: 7 Langkah

Video: Bangun Gambar Docker untuk Raspberry Pi: 7 Langkah

Video: Bangun Gambar Docker untuk Raspberry Pi: 7 Langkah
Video: Berjuang Untuk Rakyat? Ahhh Yang Bener? 2024, November
Anonim
Bangun Gambar Docker untuk Raspberry Pi
Bangun Gambar Docker untuk Raspberry Pi

Instruksi ini menunjukkan cara membuat Gambar Docker untuk Raspberry Pi.

Langkah 1: Mengapa Docker?

Anda dapat menggunakan Raspberry Pi (RPi) untuk melakukan banyak hal, server web kecil, asisten AI, Robotika … dll.

Banyak proyek yang ingin Anda coba, tetapi poin masalahnya adalah:

Saatnya Membangun

RPi tidak tertarik pada kekuatan pemrosesan, dan drive SD/USB membatasi kecepatan IO. Gunakan apt install semua paket ketergantungan membutuhkan satu jam dan membangun sumber membutuhkan lebih banyak jam. Khusus untuk proyek terkait AI, waktu untuk menunggu lebih lama daripada waktu untuk mencoba.

Konflik Versi

Semua orang mencoba banyak proyek dalam satu RPi. Ketika Anda telah mencoba sebuah proyek dan ingin beralih ke proyek lain, Anda mungkin menemukan beberapa kegagalan pembangunan yang disebabkan oleh konflik versi pustaka dependensi dengan proyek sebelumnya. Beberapa perpustakaan berhenti berkembang beberapa tahun yang lalu dan bergantung pada beberapa perpustakaan yang sangat tua. Sebaliknya, proyek aktif bergantung pada perpustakaan terbaru. Kedua proyek tidak dapat hidup berdampingan di drive SD/USB yang sama?.

Cadangan Gambar

Karena beberapa proyek tidak dapat hidup berdampingan, cukup beli lebih banyak drive SD/USB untuk menjaga agar setiap gambar proyek tetap bergantung. Jika uang tidak terbatas?. Tapi itu meningkatkan kesulitan manajemen file/gambar, terkadang Anda memerlukan swap SD/USB dan boot berkali-kali untuk mengetahui apa yang Anda inginkan.

Sulit Untuk Dibagikan

Saat Anda membuat proyek dan ingin membagikan sumbernya kepada teman, teman Anda mungkin mendapatkan umpan balik kegagalan pembangunan. Versi distribusi/perpustakaan terlalu lama atau terlalu baru, membangun parameter dan beberapa trik. Anda perlu menggunakan waktu untuk menyelesaikan masalah pembangunan orang lain tetapi tidak mendukung proyek itu sendiri.

Poin-poin nyeri di atas adalah pengalaman saya dalam beberapa tahun ini. Docker dapat membantu sebagian besar.

Docker mulai membangun dari memilih gambar induk bawaan. Misalnya. debian:jessie-slim mulai dari distribusi ringan Debian lama yang stabil; node:10-buster-slim mulai dari distribusi ringan Debian dengan Node.js 10 diinstal. Gambar prebuilt dapat menghemat banyak waktu untuk mem-flash gambar, mendapatkan pembaruan, dan menginstal perpustakaan yang bergantung. Setiap proyek dapat dimulai dari versi OS, versi runtime, dan versi library yang berbeda. Ketika Anda selesai mengembangkan proyek Anda sendiri, Anda dapat mendorong image Docker ke hub docker dan membagikannya kepada semua orang. Anda dapat menyimpan semua data proyek di SD/USB yang sama (data harus dicadangkan secara rutin ke media lain). Untuk menghemat penyimpanan lokal, Anda bahkan dapat membersihkan gambar Docker saat tidak digunakan, kapan saja Anda dapat menarik dari hub Docker lagi.

Langkah 2: Overhead Docker

Docker menambahkan satu lapisan virtualisasi, overhead menjadi perhatian. Saya belum menguji terlalu banyak tentang overhead Docker. Sebagian besar hasil Googled mengklaim overhead yang sangat rendah dan saya menemukan dokumen ini tentang beberapa penelitian terkait:

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

Langkah 3: Instal Docker

Cukup jalankan:

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

Referensi:

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

docs.docker.com/get-started/

Langkah 4: Membangun Gambar Docker

Silakan temukan panduan resmi tentang membangun gambar buruh pelabuhan:

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

Saya memiliki 2 proyek menggunakan Docker, Anda dapat menemukan Dockerfile sebagai referensi:

BanateCAD membutuhkan runtime Lua dan beberapa pustaka Lua tambahan. Hanya Lua 5.1 yang dapat kompatibel dengan semua pustaka Lua yang diperlukan tetapi ini adalah produk tahun 2006. Distribusi Debian terbaru yang dapat membangun kesuksesan Lua 5.1 adalah Jessie (Versi sebelum stabil lama Debian saat ini). Jadi saya membangun Docker Image lingkungan Lua 5.1 untuk menjalankannya

github.com/moononournation/BanateCAD/tree/…

OpenCV adalah proyek yang berkembang secara aktif, kode sumbernya bergantung pada pustaka dan kompiler terbaru. Jadi kemungkinan besar untuk gagal membangun, tanda tangan metode perpustakaan, versi kompiler, konflik ketergantungan … Saya ingin menggunakan opencv4nodejs untuk membuat aplikasi sederhana dan tidak memerlukan fitur terbaru. Jadi ketika saya menemukan cara untuk membangun kesuksesan opencv4nodejs, saya ingin membekukannya ke Gambar Docker dan melakukan pengkodean aplikasi saya yang sebenarnya

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

Langkah 5: Pengembangan Kecepatan Bangun Vs Ukuran Gambar

Pengembangan Kecepatan Bangun Vs Ukuran Gambar
Pengembangan Kecepatan Bangun Vs Ukuran Gambar
Pengembangan Kecepatan Bangun Vs Ukuran Gambar
Pengembangan Kecepatan Bangun Vs Ukuran Gambar

Anda mungkin menemukan proyek face-aware-photo-osd saya memiliki 2 versi Dockfile:

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

Saat pengembangan, saya suka membagi perintah RUN sekecil mungkin dan mengatur kemungkinan besar untuk mengubah perintah RUN ke langkah terakhir. Jadi untuk setiap perubahan pembangunan untuk pengembangan, saya dapat memanfaatkan lapisan yang dibangun sebelumnya sebanyak mungkin dan menghemat banyak kecepatan pembangunan.

Sebaliknya, saya akan menggabungkan semua perintah RUN menjadi satu sebelum rilis. lapisan yang lebih rendah dapat banyak mengurangi ukuran Gambar Docker. Proyek osd face-aware-photo-osd saya sebagai contoh dapat mengurangi ukuran lebih dari 100 MB.

Langkah 6: Gambar Multi Arch

Gambar Multi Lengkungan
Gambar Multi Lengkungan

Seperti disebutkan sebelumnya, RPi tidak tertarik pada kekuatan pemrosesan. Menggunakan RPi build Docker image mungkin bukan pilihan yang baik, terutama ketika satu-satunya RPi Anda menjalankan proyek lain.

Menggunakan komputer x86 juga dapat membantu Anda membangun Gambar Docker, silakan temukan detail lebih lanjut di sini:

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

2 perintah sederhana dapat membangun x86 dan ARM Docker Image secara paralel:

buruh pelabuhan buildx buat --gunakan

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

Multi Arch dapat membangun gambar multi platform dengan tag gambar Docker yang sama, sehingga proyek Anda dapat berjalan di mesin yang berbeda dengan mulus. misalnya

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

Tidak peduli Anda menjalankan perintah di atas pada RPi atau komputer x86 Anda, Anda bisa mendapatkan lingkungan runtime Lua.

Langkah 7: Selamat RPi

Anda sekarang dapat mengembangkan dan membagikan proyek RPi Anda dengan lebih mudah!

Direkomendasikan: