Docker on Raspberry Pi [Bahasa Indonesia]
Tags: docker, raspberrypi, containers, beginners
Published: 2020-06-01 21:34:00

---
title: Docker on Raspberry Pi [Bahasa Indonesia]
published: true
description: Setting Up Docker in Raspberry Pi for Beginners
tags: Docker, RaspberryPi, Containers, Beginners
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/ahcl8sslmd6g5dwo9v1n.png
---

##__Apa itu Docker?__##
Docker adalah alat yang membantu developers, sys-admins dan devops untuk menyebarkan aplikasi mereka di sebuah container dan dijalankan pada sistem operasi yaitu Linux.

Manfaat utama menggunakan Docker adalah nge-package aplikasi dengan dependencies ke dalam satu unit yang standar. Beda dengan virtual machine, container tidak memiliki overhead yang tinggi dan karena itu memungkinkan penggunaan sistem yang lebih efisien.

Saya sendiri sudah pernah experience menggunakan dan maintain aplikasi di virtual machine, itu standar industri saat ini masih banyak yang menggunakan virtual machine. Penggunaannya sendiri itu memang hebat dalam menyediakan proses isolasi penuh untuk menjalankan aplikasi. Tapi kekurangan nya VM itu di penggunaan resource dan overhead komputasi yang tinggi. Dengan adanya Docker ini, dia mempunyai prinsip yang sama yakni memanfaatkan low-level proses isolasi dari host OS dan juga menggunakan komputasi yang sangat rendah.

Post ini saya cuma membahas gimana kalian bisa ngoprek2 dan bermain dengan Docker di Raspberry Pi. Jika ada yang kurang tahu apa itu Raspberry Pi, dasarnya itu komputer kecil yang kalian bisa beli di Tokopedia; Bukalapak; Shopee; dan e-commerce lainnya relatively seharga Rp.500k ribuan. Yang model baru [Raspberry Pi 4](https://www.tokopedia.com/kivala/raspberry-pi-4-model-b-4gb) itu Rp.1jutaan ini juga include accessories yang diperlukan rata2 harga segituan. Kalau saya sih masih menggunakan model 3b atau 3b+ deh lupa yang mana hehe.

- - - -

##__Trus gimana caranya bang?__##

Saya harap kalian bisa menginstal dan menjalankan Raspbian OS dan juga dapet access ke SSH atau VNC. Mulai sekarang saya akan menunjukkan kepada kalian bagaimana menginstal docker dari fresh Raspbian installation. 

Banyak cara online yang menggunakan cara ini:

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

dan ini juga kadang nggak bisa diandalkan. Sebaiknya kita mengikuti dari document yang di sediakan dari Docker [[Docker Docs]](https://docs.docker.com/engine/install/debian). Saya mengikuti dari docs nya docker, dan juga menemukan masalah waktu menginstal. Kalau kalian mengikuti docs nya dan sudah mencapai di section: 

`$ sudo add-apt-repository ...`

disini saya encounter **Traceback error** 

`Error: could not find a distribution template for Raspbian/buster`


Sampai sekarang (02 June 2020), error ini masih Open issue [disini](https://github.com/moby/moby/issues/31405). Ada work around nya bukan solusi nya, solusi dan work around berbeda ya. Saya dapat memperbaiki error dengan menggunakan work around yang di provide dari user *Chepurko*. Work aroundnya begini
`
deb [arch=armhf] https://download.docker.com/linux/debian raspbian-buster main
`
Ini yang ditulis di document Docker, ditambahkan ke directory `etc/apt/sources.list.d/docker.list`. Kalau nggak ada `docker.list` bisa buat file yang baru dengan nama yang sama.

##__Docker Time__##
Sekarang kita sudah menyiapkan semuanya, saatnya untuk membuat tangan kita kotor. Di bagian ini, kita akan menjalankan container Ubuntu di sistem kita dan merasakan command2 docker.

Untuk memulai, mari kita jalankan yang berikut di terminal:

`$ sudo docker pull ubuntu`

Perintah pull ini mengambil image ubuntu dari registri Docker dan menyimpannya ke sistem kita. Kalian dapat menggunakan `$ sudo docker images` command untuk melihat daftar semua image di sistem kalian.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/m4lm2632ks2u3o97qoyk.png)

Bagus! Sekarang mari kita jalankan Docker berdasarkan image ini. Untuk melakukan itu kita akan menggunakan docker command.

`$ sudo docker run ubuntu`

Tunggu, keliatannya ngga ada yang terjadi?! Bisa jadi programnya kena bug? Ya tidak. Di belakang layar ada banyak hal yang terjadi dengan Docker, ketika kalian memanggil run command, client Docker menemukan imagenya ubuntu, di load ke container dan eksekusi command dalam container itu. Ketika kita menjalankannya, itu kekurangan perintah yang diperlukan supaya kita bisa menggunakannya. Dasarnya dia nge boot, menjalankan perintah kosong dan kemudian keluar. Proses ini sangat cepat, bayangkan virtual machine saja udah beda jauh di speed performance nya untuk mem-boot, menjalankan perintah dan membunuhnya. Okay, sekarang saatnya untuk melihat perintah `$ sudo docker ps` yang menunjukkan semua container yang sedang jalan.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/j3wyqzkmdbs0iz3hlagh.png)

Kita melihat garis kosong karena tidak ada container yang berjalan. Mari coba varian yang lebih berguna dengan menggunakan 

`$ sudo docker ps -a`

Jadi apa yang kita lihat di atas adalah daftar semua container yang sedang jalan di machine saya. Perhatikan dengan STATUS column, ini menunjukkan bahwa container ini keluar beberapa menit yang lalu.

Mari kita coba menggunakan flag interactive di terminal.
`$ sudo docker run -it ubuntu`
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/etodeybx0616qqcoi0al.png)

Menjalankan command `run` dengan flag `-it` melampirkan kita ke tty interactive dalam container. Saya juga menggunakan `--rm` flag, dasarnya container yang baru saya jalankan bakal di hapus pas saya sudah menggunakannya. Menghapus container juga bisa digunakan dengan command `$ sudo docker rm <NAMES/CONTAINER ID>`. Ada banyak command yang kalian bisa main dan oprek sendiri.

- - - -

##__Wrapping Up__##
Setelah post yang panjang, melelahkan namun menyenangkan, kalian sekarang bisa menghadapi di dunia container! (still far from perfect, but like what others say "practice makes perfect" ). Saya pun sedang bermainan dengan Docker walaupun masih berkuliah, beberapa hari lagi bakal ada ujian akhir semester juga :(

Saya berharap bahwa menyelesaikan post ini bisa membuat kalian lebih percaya diri kepada kemampuan kalian sebagai developer,sys-admin atau devops. Put your mind and ideas into action, Terima Kasih.