Remove Untagged Images and Container From Docker

I’ve been playing around a lot with docker. It’s awesome, and it creates a whole new world of possibilities, and I’m constantly coming up with new ideas of where it could be useful.

After playing with docker for about a week on my development server, I logged in to find that my disk was completely full. I guess after dynamically spinning up dozens of containers, and building a bunch of projects with Dockerfiles I had accumulated quite a few stopped containers and untagged images. I suspect the build process to be the biggest contributor to this, as each step in your dockerfile creates a new container, which serves as the base for the next step. This is usfeul because it can cache the containers and speed up builds, but it does consume a bit of space.

I was not able to find any built-in commands for clearing stopped containers and untagged images, so I was able to put together a couple commands.

Remove all stopped containers.

docker rm $(docker ps -a -q)

This will remove all stopped containers by getting a list of all containers with docker ps -a -q and passing their ids to docker rm. This should not remove any running containers, and it will tell you it can’t remove a running image.

Remove all untagged images

In the process of running docker I had accumulated several images that are not tagged. To remove these I use this command:

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

This works by using rmi with a list of image ids. To get the image ids we call docker images then pipe it to grep “^<none>”. The grep will filter it down to only lines with the value “<none>” in the repository column. Then to extract the id out of the third column we pipe it to awk “{print $3}” which will print the third column of each line passed to it.

After running these two commands I recovered 15G of space. There may be more I could do to recover more space, my docker graph directory still is over 5G, but for now this works.

Advertisements

Android – Run/install/debug applications over WiFi

There is a way to test your android applications in development over WiFi and I love to untether my phone and develop wirelessly. Here is the way to do it :

  1. Connect device via USB and make sure debugging is working.
  2. make sure your development phone and macbook in the same wireless network
  3. open your terminal
  4. get your phone IP address, here the way :
    1. adb shell
    2. netcfg
  5. adb tcpip 5037
  6. adb connect <DEVICE_IP_ADDRESS>:5037
  7. Disconnect USB and proceed with wireless debugging.
  8. adb -s <DEVICE_IP_ADDRESS>:5555 usb to switch back when done.

No root required!

source : http://forum.xda-developers.com/showpost.php?p=7594419&postcount=9

Mac setup adb from terminal – export path adb command

I spent quite sometime figuring how to set up adb on Mac, so I figure writing how to set it up might be useful to some people. adb is the command line tool to install and run android apps on your phone/emulator

here we are :

export PATH=$PATH:/Users/[yourusername]/android-sdks/platform-tools/

If you put the android-sdks folder in other directory, replace the path with the directory android-sdks/platform-tools is in

#onemonthapp #3

Oh god, ke skip nulis buat report #onemonthapp sebulan T.T

oke bukannya mau cari2 alasan, tapi beberapa minggu terakhir saya sibuk dengan project hackathon saya yang … hahaha bisa dibilang ajaib. mungkin lain waktu akan saya ceritakan kisahnya. tapi sekarang kembali ke project onemonthapp saya, dengan sangat amat sedih, project billme saya pending dulu 😦 karena skearang lebih fokus untuk ngerjain project limakilo yang bisa dilihat teaser nya di http://limakilo.id 😀

tunggu ya akhir bulan ini rilis versi android nya 😉

Project ini berawal dari event hackathon yang mengusung tema tentang “kawal komoditas pangan” – problem naik-nya harga di level konsumen, padahal harga di petani alias produsen nya murah abis 😦 so ini beberapa hasil brainstorm kami :

Ideation

maap fotonya jelek. nanti saya coba scan ulang yak :p

kali ini saya berkesempatan kolaborasi dengan @lisaayuw – business analyst jebolan MBA prasmul untuk rancang ide bisnis nya. intinya setalah beberapa jam riset dan telpon beberapa petasi kesana-sini kami sepakat untuk buat app marketplace yang bisa menghubungkan langsung petani dengan pembeli, dan untuk studi kasus pertama kami pilih bawang dan kota brebes.

001 002

Sketch

Di ide awal app ini saya coba garis bawahi 2 fitur utama dari app ini :

  1. konsumen bisa pilih daftar bawang yang dijual oleh beberapa petani (harga bawang ditentukan petani) untuk paketan 5kg
  2. konsumen bisa mencari petani yang bersedia menjual bawang dalam jumlah besar dengan harga dibawah pasar (harga ditentukan oleh konsumen -semacam pembelian grosir)

003004

Android app

Dan kali ini saya kerjain app android nya dua orang bareng @martinlutern tapi masih aja dikomplen kerjaan kami lambat 😦

soalnya kali ini saya coba library material design barunya Google 😀 yah lambat tapi worth it. next time implement material design bisa lebih cepet dah!

oh ya, logo nya ini sumbangan dari bro @arieare yang awesome abis 🙂 thanks!

Screenshot_2015-09-12-19-24-02 Screenshot_2015-09-12-19-24-11 Screenshot_2015-09-12-19-24-18 Screenshot_2015-09-12-19-24-24 Screenshot_2015-09-12-19-24-36 Screenshot_2015-09-12-19-24-54

Server app

untuk server seperti biasa semua di handle sama bos @ariffsetiawan sih, kalau ga salah spec nya node.js pak framework express. DB nya standar aja pake mySQL. Tapi seperti biasa masalah server dan deployment saya yang handle 😀

dan kali ini praktek docker nya cukup sukses di deploy ke elasticbeanstalk nya AWS biar next ya bisa auto scaling dan kuat buat handle traffic berat.

monggo boleh visit dockerhub saya di https://hub.docker.com/u/whegreen/ 🙂

Screen Shot 2015-09-12 at 8.08.17 pm

oke deh, sementara ini progress #onemonthapp saya yang udah berubah haluan sementara ke project limakilo

salam #onemonthapp !

Android MVP Design Pattern | #onemonthapp #1 #restrospective

Beberapa waktu kemarin, saya sempat posting tentang #onemonthapp dan karena saya kurang rajin nulis, jadi saya akan cicil dikit2 tentang apa aja point2 dari sisi technical yang saya dapet waktu develop app. Kali ini tentang design pattern MVP di android. tapi sebelumnya kita mulai lewat MVC

MVC – Model View Controller

Sebelumnya, saya biasa develop app android dengan design pattern MVC – Model View Controller. dan ini design pattern yang paling umum, tapi masih aja banyak developer yang abusing design pattern ini, yang penting asal running lah app nya – alhasil… di device yang memory nya limit, bakal sering crash karena outofmemory exception 😦

tapi semakin lama berkutat dengan android, saya rasa design pattern ini kurang yahud, karena di android kadang model dengan view susah dipisahkan ke dalam kelas sendiri, misalkan class adapter – class bawaan android. code di class activity bakal nyampur adukin view dan controller disini. Akan banyak debat antar developer – Activity itu Controller atau View? no big deal sih kalo emang mau code nya sedikit messy.

Activty Class di android harusnya ngga extend View Class, tapi pada implementasi code-nya Activity Class ini punya method onCreate, onPause etc yang notabene handle input event dari konsep view. So pada implemetasinya Activity Class ini akan jadi semacem pseudo View-Controller, belum lagi tambahan setContentView yang makin nyampur adukin element UI disini. Tapi bukan berarti MVC ini jelek lho ya, di Java – bukan android, design pattern ini yang paling banyak penganutnya 🙂

500px-MVC-Process.svg

dari situ saya coba gugling2 alternatifnya dan nemu blogpost yang cukup oke dari om ini >> antonio leiva monggo di follow twitternya

kalau mau baca sumber aslinya bisa mampir kesini >> http://antonioleiva.com/mvp-android/

MVP – Model View Presenter

simple nya, di MVP ini, activity / fragment atau semua code yang berhubungan dengan framework android dianggap sebagai view. sedangkan View dan Presenter class nya pure java code – apa untungnya? kalo kalian TDD mania, bikin unit test untuk interface jadi lebih indah 🙂 dan buat saya TDD ini harga mati!

TDD is the only way to code . . .

image_thumb_1

Diagram diatas, adalah komparasi MVP, MVC dan MVVM. problem yang saya alamin kalau pake MVC itu.. View sama Controller ga bisa jadi kelas yang terpisah, pasti akan kecampur aduk. Kalau di MVP, most likely kita bisa clean pisahin untuk kelas Presenter.java, View.java dan Model.java. Kelebihan lainnya adalah debug screen untuk state UI akan jadi simple disini karena View dan Model terpisahkan secara jelas oleh kelas presenter. in short, di MVP Pemisahan state UI akan lebih rapih.

View – berisi UI components, dan handles events – nya. – totally clean dari controller 😉

  • entry point input user
  • rendering component UI
  • routing event ke presenter

Presenter – perantara view dan model, misalnya data dari model kita punya judul, long description, short description dan author, sedangkan di view kita cuma perlu nampilain judul dan short description – disinilah tempat kita ngetikin code untuk pilah-pilahin data yag ditampilin

Model – nah ini tempat kita akses data, akan sangat cakep kalau kita pakai RESTful data dari server. buat support librarynya saya saranin pake Retrofit – nya @squareapp *antek squareapp detected*

cut the crap deh, lebih lengkapnya bisa check sample code dari om antonio >> MVP example – Github

mungkin next time saya share code made in saya untuk lengkapin blog post ini lah *tapi entah kapaaan*. Saya pribadi sih cocok abis ama MVP ini, tapi sekali lagi semua preference 🙂 mau code yang rapi atau ngga dan standar rapi tiap orang juga beda-beda.

MVVM

Untuk MVVM sendiri, saya belum pernah experiment tapi design pattern ini famous di kalangan developer javascript.

bye, salam #onemonthapp

#onemonthapp #2

bagi donk tips motivasi buat nulis 😦 susah banget ngumpulin niat ngeblog.
tapi kebetulan kali ini lagi ada motivasi buat nulis lagi, karena takut malu udah koar2 bikin hashtag #onemonthapp tapi ga update2 progress :))

supaya nanti ga ada yang nyinyir di twitter

nah ini quote dari tulisan gw bulan lalu :

oh ya, buat first #onemonthapp project nya mau coba bikin sample chat android app + socket.io server + docker + AWS Elasticbeanstalk. Asoy, semoga makin kece jadi fullstack developernya – mungkin next time bikin tulisan tentang fullstack developer juga oke nih

alhamdulillah targetnya kelar sih, tapi app android nya masih sedikit kurang oke, karena cuma asal jalan :p

chat android app – link

https://github.com/whegreen/billme

socket.io app – checked

reponya masih messed up 😦

dockerizing app – link

https://registry.hub.docker.com/u/whegreen/socket.io/

deploy elasticbeanstalk – link

http://socketio-dev.elasticbeanstalk.com/

yang lumayan sih monggo di cek http://socketio-dev.elasticbeanstalk.com/

yang dipelajarin dari #onemonthapp sesi 1 kemarin sih cukup banyak mulai dari

– setup node.js + socket.io yah, personal achievement aja sih, bisa membanggakan hello world nya 😀

– setup docker : ini startup yang cukup hot buat para devops. must try!

– setup docker in AWS Elasticbeanstalk : ini juga cukup puas hasilnya buat hello world

– setup socket.io client di android : nah, ini nih… app sih running. tapi karena kemarin terlalu pengin perfeksionis untuk implement design pattern MVP sama nyobain material design library keluaran google, alhasil ga terlalu optimal

yasudah, yang android client nya dijadiin target #onemonthapp #2 aja dan asiknya kali ini ada bala bantuan dari kaka @ariffsetiawan yang akan bantuin saya support mobile site sama backend :3

semoga next time saya ada niatan untuk nulis review dan tutorial untuk tekhnolokhi2 diatas di blog ini.

Bye – salam #onemonthapp

#onemonthapp

Sebenernya ga ada yang spesial dari hashtag ini, karena mungkin belum pernah ada yang pakai juga di sosmed.

Ide ini juga berasal dari kerandoman saya (walau saya lebih suka nyebut ini free-will + creativity, tapi banyak temen saya nyebut ini random)  yang ingin menyalurkan hobi ikut hackathon yang beberapa bulan terakhir tak kunjung ada 😦

so the rule is simple – I will create an app in one month regularly, period.

scope #onemonthapp nya juga suka-suka saya, technology stack nya juga suka-suka saya 🙂 kecuali situ mau invest, let’s have some coffee later 😉

Tapi most likely beberapa stack technology yang akan dipakai sih beberapa technology yang sering saya pakai buat project sehari-hari, nanti sambil jalan dibahas satu-satu deh 🙂

  1. Client / Frontend
  2. Backend / RESTFul API Server
  3. Infrastructure / Cloud / DevOps – mostly AWS Technology
  4. Database

Oke deh, dari pada makin manjangin tulisan yang ga bisa dicompile ini, saya lanjut buka code editor aja.

oh ya, buat first #onemonthapp project nya mau coba bikin sample chat android app + socket.io server + docker + AWS Elasticbeanstalk. Asoy, semoga makin kece jadi fullstack developernya – mungkin next time bikin tulisan tentang fullstack developer juga oke nih

Bye – salam #onemonthapp