Kali ini saya akan mengungkapkan pengalaman saya menggunakan Raspberry Pi dengan KODi OS (LibreElec) sebagai Media Player untuk signal TV Satelit ke IP.
Solusi ini saya pilih karena reciever SAT to IP yang saya miliki tiba-tiba rusak. Dan jenis reciever ini tidak lagi diproduksi oleh Devolo.
Semulanya TV system saya terhubung sebagai berikut:
system semula: TV Satelit Antena -> Devolo SAT-IP Server -> Router -> Devolo SAT-IP Reciever -> TV(hdmi-in)
Problem dalam system: TV Satelit Antena -> Devolo SAT-IP Server -> Router -> Devolo SAT-IP Reciever(tidak berfungsi) -> TV(hdmi-in)
Solusi: TV Satelit Antena -> Devolo SAT-IP Server -> Router -> Raspberry pi 3b (KODI OS) -> TV(hdmi-in)
Ide ini timbul karena selama ini saya dapat langsung menikmati Program TV SAT to IP Program lewat SAT > IP apps (dengan IPHONE & IPAD).
Berikut Ini sketsa solusi Implementasi hardware IPTV dan SAT to IP :
Untuk mencoba apakah channel list ini dapat dipergunakan di KODI, saya melakukan ujicoba sebagai berikut:
Saya coba untuk menggunakan m3u files yang saya dapatkan di atas, untuk diupload di VLC Viewer sebagai Mediaplayer List:
Solusi ini dengan VLC ternyata berfungsi dengan baik, sekarang saatnya saya mencoba untuk menggunakan m3u file tersebut sebagai konfigurasi tv di KODI.
Persiapan untuk konfigurasi KODI:
Instalasi OS KODI di raspberry pi 3b
Konfigurasi KODI dengan PVR IPTV Simple Client Addon
Konfigurasi PVR IPTV Simple Client untuk menggunakan M3U file yang saya sebutkan di atas.
Sebagai Remote control saya dapat menggunakan Kodi Remote App dengan iphone.
Setelah konfigurasi selesai maka KODI dapat saya pakai untuk menjadi SAT to IP reciever menggantikan Devolo SAT-IP Reciever yang tidak lagi berfungsi .
Lebih murah dan mempunyai lebih banyak fungsi dibandingkan dengan Devolo SAT-IP Reciever, saya juga dapat menikmati IP TV langsung dengan TV saya selain SAT to IP, dengan KODI. Serta menikmati Program TV lewat Apps dari sender tertentu.
Selain itu saya juga dapat menikmati Siaran Internet TV dari Sender yang ada di Indonesia secara langsung lewat Internet tanpa satelit.
Munculnya Docker memicu ledakan popularitas kontainer. Sejak itu, semakin banyak alat dan standar yang dirancang untuk membantu mengatur penggunaan teknologi ini.
Sayangnya, cukup sulit untuk mengikuti perkembangan. “Pertempuran” antara perusahaan teknologi besar juga membingungkan bagi banyak dari kita.
Dalam
artikel ini, saya akan membahas semua nama besar yang pernah Anda
dengar dan mencoba menguraikan jargon teknis untuk Anda dan menjelaskan
bagaimana ekosistem kontainer akan bekerja sama pada tahun 2021.
Dan jika Anda berpikir bahwa Anda adalah satu-satunya yang tidak mengerti semua ini, jangan khawatir … Anda tidak sendirian!
Pahami Docker
Ada perbedaan antara Docker (dalam bentuk perusahaan), Docker-Containern, Docker-Images, dan Development Tools Docker yang biasa kita gunakan:
Seperti yang Anda lihat, Anda bukan satu-satunya yang bingung. Joe Beda , co-developer Kubernetes, setuju.
Ini
adalah kesempatan sempurna untuk menjernihkan beberapa kebingungan dan
membantu Anda memahami kapan itu Docker, containerd, atau CRI-O. Ini sangat penting jika Anda ingin membahas topik Kubernetes.
Penting bagi Anda untuk mengingat hal-hal berikut:
Wadah tidak lagi dikaitkan secara permanen dengan nama Docker. Ada beberapa alat kontainer yang tersedia. Docker adalah salah satunya, dan Docker (perusahaan) mendukung beberapa tetapi tidak semuanya.
Jika Anda masih berpikir bahwa container hanyalah Dockers, baca terus! Sekarang kita akan melihat lebih dekat pada ekosistem kontainer.
Garis besar ekosistem kontainer
Ekosistem kontainer terdiri dari banyak teknologi, istilah khusus, dan perusahaan pesaing. Untungnya, perusahaan terkadang menegosiasikan gencatan senjata yang rapuh untuk menyepakati standar tertentu.
Standar
ini membantu untuk mencapai interoperabilitas antara alat yang berbeda
dan menghindari ketergantungan pada perusahaan atau proyek tertentu
(teknologi). Standar dasar yang harus diikuti:
Container Runtime Interface (CRI) mendefinisikan API antara Kubernetes dan Container Runtime.
Open Container Initiative (OCI) mendefinisikan standar untuk image dan container.
Diagram di bawah menunjukkan bagaimana Docker , Kubernetes , CRI , OCI , containerd dan runc cocok bersama dalam ekosistem ini:
Ini adalah alat yang digunakan untuk menjalankan kontainer dalam pengembangan atau produksi.
CRI ( Container Runtime Interface) adalah Kubernetes API (Application Programming Interface). CRI mendefinisikan cara Kubernetes berinteraksi dengan runtime container yang berbeda. Karena standar dalam spesifikasi, Anda dapat memilih implementasi CRI mana yang ingin Anda gunakan atau mungkin Anda tulis sendiri.
Anda dapat memilih sendiri runtime yang sesuai dengan spesifikasi Container Runtime Interface (CRI). containerd dikembangkan oleh Docker. Plug-in CRI adalah plug-in yang terintegrasi secara bawaan dalam containerd dan diaktifkan secara default (dari versi 1.1). Ini memungkinkan Anda untuk menjalankan Kubernetes dengan containerd sebagai runtime container. CRI-O adalah proyek open source dan alternatif untuk containerd dan didukung oleh sejumlah perusahaan terkenal.
OCI adalah spesifikasi standar industri terbuka yang berisi dua spesifikasi: spesifikasi runtime (runtime-spec) dan spesifikasi gambar (image-spec)
runC adalah alat yang sesuai dengan OCI untuk membuat dan menjalankan container. runc digunakan untuk membuat dan menjalankan container sesuai dengan spesifikasi OCI.
Docker
Kami akan mulai dengan Docker karena ini adalah alat kontainer paling populer saat ini. Bagi banyak orang, nama “Docker” sendiri merupakan sinonim dari kata “container”.
Docker memulai seluruh revolusi containerisasi ini. Docker
telah menciptakan alat yang sangat ergonomis dan mudah digunakan untuk
bekerja dengan container, yang juga disebut Docker.
Administrasi dari Pengguna / administrator dan memulai container dengan CLI Docker.
containerd menggunakan image, mengelola jaringan dan penyimpanan, dan menggunakan runc untuk menjalankan container
runc menangani Low Level “Stab” process untuk membuat dan menjalankan proses container
docker dapat diinstal pada sistem operasi klien atau pada sistem operasi server. docker berisi sejumlah alat yang menyederhanakan pekerjaan pengembang dan insinyur DevOps. Dengan CLI buruh pelabuhan Anda dapat membuat image container, mengambilnya dari repositori, membuat container, memulai dan mengelolanya.
Docker terdiri dari tiga proyek:
docker-cli – adalah utilitas baris perintah yangberinteraksidengan Anda menggunakan perintah docker .
containerd – adalah daemon Linux yang mengelola dan memulai container. Ini mengunduh gambar dari repositori, mengelola penyimpanan dan jaringan, dan memantau eksekusi kontainer.
Runc – adalah runtime container tingkat rendah yang benar-benar membuat container dan menjalankan. Ini termasuk libcontainer , implementasi berbasis Go asli untuk membuat container.
Saat Anda menjalankan wadah dengan docker , Anda sebenarnya menjalankannya dari daemon docker, containerd, dan kemudian runc .
Dockershim: Docker di Kubernetes
Penting untuk dicatat bahwa Kubernetes hanya dapat melayani runtime container yang mendukung Container Runtime Interface (CRI). Namun, Docker tidak dapat secara langsung mendukung standar ini. Oleh karena itu, Kubernetes menyertakan komponen yang disebut dockershim, yang diperlukan untuk bekerja dengan Docker.
Di masa mendatang (dari versi 1.23) Kubernetes akan menghentikan dukungan untuk Dockershim dan juga Docker dan hanya akan bekerja dengan Container Runtime s yang mendukung Container Runtime Interface (CRI) – containerd atau CRI-O . ( FAQ Penghentian Dockershim )
Namun, ini tidak berarti bahwa Kubernetes tidak akan dapat menjalankan container berformat Docker. Baik containerd maupun CRI-O dapat menjalankan gambar berformat Docker (berformat OCI). Anda tinggal melakukannya tanpa harus menggunakan perintah docker atau daemon Docker.
Shim
– Secara teknis, shim adalah komponen dalam sistem perangkat lunak yang
bertindak sebagai jembatan antara berbagai API atau sebagai lapisan
kompatibilitas. Terkadang shim ditambahkan saat Anda ingin menggunakan komponen pihak ketiga. Anda membutuhkan sedikit kode lem untuk membuatnya bekerja.
Docker-Images
Apa yang disebut banyak orang sebagai Docker Image sebenarnya adalah Image yang dikemas dalam format Open Container Initiative (OCI) .
Jika Anda ingin mengunduh gambar dari Docker Hub atau repositori lain, Anda dapat melakukannya dengan perintah buruh pelabuhan atau dengan utilitas podman, atau dengan alat lain yang mendukung spesifikasi format gambar OCI.
Container Runtime Interface (CRI)
CRI adalah API yang digunakan Kubernetes untuk mengontrol berbagai runtime container untuk membuat dan mengelola container.
CRI menyederhanakan penggunaan runtime container yang berbeda untuk Kubernetes (atau lebih tepatnya kubelet ). Alih-alih mendukung setiap kemungkinan runtime container secara terpisah, hanya standar CRI yang didukung yang digunakan. Dalam hal ini, tugas manajemen kontainer sepenuhnya terletak pada runtime kontainer.
Jadi, jika Anda lebih suka menggunakan containerd untuk menjalankan container Anda, jangan ragu untuk melakukannya. Atau, jika Anda lebih suka menggunakan CRI-O maka Anda dapat menggunakan ini dengan aman. Ini karena spesifikasi CRI diimplementasikan di kedua runtime.
Sebagian besar waktu, jika Anda adalah pengguna akhir, bagaimana Anda mengimplementasikannya tidak menjadi masalah. Implementasi CRI dirancang agar dapat dipasang dan diubah dengan mulus.
Untuk informasi Anda: Red Hat (proyek OpenShift) menggunakan CRI-O dan bertanggung jawab atas pemeliharaannya (keamanan, perbaikan bug, dll.). Sementara containerd terus dibungkus oleh Docker.
Runtime container mana yang digunakan di Kubernetes?
The kubelet (sebuah berjalan agen pada setiap node) bertanggung jawab untuk berinteraksi dengan runtime wadah dalam arsitektur Kubernetes. Tugas utama kubelet adalah mengirimkan instruksi start/stop ke runtime container.
Opsi berikut digunakan untuk mengonfigurasi runtime container: –container-runtime dan –container-runtime-endpoint. Anda
dapat mengetahui Container Runtime mana yang sudah terinstal di
infrastruktur Kubernetes Anda menggunakan rantai perintah berikut:
kubectl mendeskripsikan simpul <node_name>
containerd
containerd adalah runtime container tingkat tinggi yang berasal dari Docker dan mengimplementasikan spesifikasi CRI. ontainerd
menarik gambar dari repositori, mengelolanya dan kemudian meneruskannya
ke runtime bawahan, yang benar-benar membuat dan menjalankan proses
kontainer.
containerd telah dihapus dari proyek Docker untuk membuat Docker lebih modular. Jadi Docker menggunakan containerd untuk dirinya sendiri.Saat Anda menginstal Docker, containerd juga diinstal secara otomatis. Selain itu, ontainerd menggunakan pluginnya sendiri untuk mendukung CRI di Kubernetes.
CRI-O
CRI-O adalah runtime container tingkat tinggi lainnya yang mengimplementasikan Container Runtime Interface (CRI). CRI-O adalah alternatif untuk containerd dan bekerja dengan cara yang sama.
CRI-O dikembangkan dengan dukungan Red Hat, IBM, Intel dan SUSE sebagai wadah runtime untuk Kubernetes. CRI-O menawarkan kemungkinan untuk memulai, menghentikan, atau memulai ulang container, sama seperti containerd.
Inisiatif Kontainer Terbuka (OCI)
OCI adalah sekelompok perusahaan teknologi yang mempertahankan spesifikasi untuk format gambar kontainer dan eksekusi kontainer.
Gagasan di balik OCI adalah Anda dapat memilih di antara berbagai runtime yang sesuai dengan spesifikasi. Masing-masing runtime ini memiliki sub-implementasi yang berbeda.
Misalnya, Anda memiliki satu runtime yang kompatibel dengan OCI untuk host Linux Anda dan satu untuk host Windows Anda. Ini adalah keuntungan memiliki standar yang dapat diterapkan oleh banyak proyek yang berbeda.
runc
runc adalah runtime kontainer yang kompatibel dengan OCI. Ini mengimplementasikan spesifikasi OCI dan menjalankan proses container.
runc disebut sebagai implementasi referensi OCI.
Apa itu implementasi referensi?
Implementasi referensi adalah perangkat lunak yang telah mengimplementasikan semua persyaratan spesifikasi atau standar. Biasanya software pertama yang dikembangkan dari spesifikasinya. Dalam kasus OCI, runc menawarkan semua
fungsi yang diharapkan dari runtime yang sesuai dengan OCI, meskipun
setiap orang dapat mengimplementasikan runtime OCI mereka sendiri jika
mereka mau.
runc
menawarkan semua fungsi tingkat rendah untuk wadah dan berinteraksi
dengan fitur Linux tingkat rendah yang ada seperti ruang nama dan grup
kontrol. runc menggunakan fungsi-fungsi ini untuk membuat dan menjalankan proses container.
Ada juga beberapa alternatif untuk runc :
crun adalah runtime kontainer yang ditulisdalam C (sebaliknya, runc ada di Go )
kata-Runtime berasal dari proyek Katacontainers , yang mengimplementasikan spesifikasi OCI sebagai VM ringan individual (virtualisasi perangkat keras)
gVisor berasal dari Google dan dapat membuat wadah dengan kernelnya sendiri. Ini mengimplementasikan OCI dalam runtime-nya yang disebut runc .
Kesimpulan
Dalam artikel ini kita melihat bahwa Docker hanyalah sebagian kecil dari keseluruhan ekosistem container. Ada standar terbuka: CRI dan OCI serta proyek seperti containerd , runc dan CRI-O . Kami akan segera melihat banyak implementasi baru dari runtime container dengan dukungan untuk standar CRI dan OCI.
Semoga artikel ini bisa memberi sedikit pencerahan tentang gelapnya dunia container.
sudo usermod -aG docker <run user for docker>
sudo usermod -aG docker pi
check apakah User dapat menggunakan docker:
id -a | grep docker
listing seperti ini harus tampil di konsole anda:
....., 995(docker), ......
Untuk mencoba apakah anda sekarang dapat menggunak kan docker , anda dapat mencoba untuk menampilkan semua process yang online di docker dengan komand ini :
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES