Bermain Dengan Docker Bagian 1: Membuat Lab Pertama

Setelah Berkenalan Dengan Docker, selanjutnya kita akan bermain-main dengan Docker. Untuk permainan pertama kita butuh sebuah panduan yang cukup menarik, dalam hal ini saya menjatuhkan pilihan pada panduan Play With Docker disitu ada 2 pilihan peranan yaitu berperan sebagai SysAdmins & IT Pro dan berperan sebagai Developer. Karena saya punya cita-cita menjadi SysAdmin :B maka tulisan ini akan membahas tentang Sysadmin & IT Pro tapi saya juga pingin jadi Data Scientist juga sih, eh kok curhat :D. Namun jika kalian mau bermain sebaga Developer bisa langsung ke Play With Docker. Dan sebelum itu sebaiknya buat akun dulu di Docker Hub, karena kita bisa praktik Docker di web Play With Docker.

Karena saya penasaran gimana performa si Docker pada laptop kentang maka langsung bermain di laptop kentang saya :D. Setelah memilih sebagai Sysadmin & IT Pro, kita akan disuguhkan dengan 3 level permainan. Level 1, kita akan bermain tentang dasar-dasar Docker, level 2 akan membahas Docker lebih dalam lagi mulai keamanan, jaringan dan orkestrasi. Sedangkan pada level 3 ini membahas tentang implementasi di level produksi. Di level 1 akan dibagi menjadi 3 bagian lagi, bagian pertama kita akan membuat sebuah lab sederhana di Docker, bagian kedua kita akan bermain dengan Docker Image. Pada bagian terakhir akan bermain dan berkenalan dengan Swarm Mode pada Docker.

Pada tulisan ini kita akan mencoba bagian pertama pada level 1, yang mana akan menjalankan sebuah Docker Container atau sering disebut Container saja dan mengeksplore dasar-dasar sebuah Container bekerja, bagaiamana menjalankan Docker Engine atau bisa juga dengan Engine dan mengisolasi antar Container.

Hello World Docker

Dalam dunia IT pasti tidak asing dengan kata Hello World, di Docker pun juga ada kata tersebut. Sekarang jalankan perintah:

docker container run hello-world

Pada screenshot saya masih mnggunakan sudo, belum tak kasih akses root si Docker :D. Pada gambar selanjutnya menjelaskan proses perintah yang sudah kita jalankan. Saat menjalankan perintah tadi si Docker akan mencari sebuah image dengan nama Hello-World di lokal komputer, jika tidak ada akan mencari dan mendownload image Hello-World dari Docker Registry,secara default ada di Docker Store.

Lab Pertama Docker

Pada lab pertama ini, kita akan menggunakan container Alpine Linux, Alpine Linux ini merupakan distribusi Linux yang ringan tapi cukup powerfull digunakan di lingkup server. Tapi sayang sekali, pernah mencoba di laptop kentang saya cukup bermasalah saat mencoba Live USB. Entah saya yang salah bikin Live USBnya atau file ISO corrupt kurang tahu, sudah lama soalnya hehehe.

Untuk membuat Lab pertama kita, jalankan perintah:

docker image pull alpine

Ketika menjalankan perintah pull, kita akan otomatis mendownload image dari Docker Registry dan menyimpan image di loka komputer kita. Untuk mengecek apakah image sudah terdownload bisa menjalankan perintah seperti screenshoot diatas:

docker image ls

Menjalankan Docker Container

Setelah image Alpine Linux terdownload, saatnya bermain-main dengan Docker Container. Jalankan perintah:

docker container run alpine ls -l

Perintah tersebut, Docker akan menjalankan image Alpine (container) yang sudah dan mengakses perintah ls -l pada Alpine. Setelah menghasilkan output berupa list direktori pada container, Docker akan mematikan container yang sedang dijalankan tadi. Atau bisa juga lihat penjelasan gambar dibawah, gambar tersebut saya ambil dari web Play With Docker.

Masih bingung? mari kita coba beberapa perintah yang lainnya, misalnya menjalankan perintah echo:

docker container run alpine echo "hello from alpine"

Perintah echo ini dijalankan di Alpine pada Container. Sama seperti perintah yang diatas tadi. Sekarang tambahkan -it setelah run:

docker container run -it alpine /bin/sh

Penambahan -it ini digunakan untuk membuat Container interaktif dan mengakses tty, lebih jelasnya bisa jalankan perintah man docker run. Perintah /bin/sh akan menjalankan shell pada Alpine, ketika sudah masuk mode shell pada Alpine jalankan perintah uname -a, perintah ini menampilkan informasi yang sedang dipakai. Lalu jalankan exit untuk keluar dari Container. Nah sekarang coba bandingkan perintah uname -a atas dan bawah, yang atas saat menjalankan container dan yang bawah dijalankan langsung pada mesin. Silahkan amati perbedaannya, tidak saya jelaskan :B.

Melihat Container Yang Berjalan

Untuk mengetahui container yang sedang berjalan, gunakan perintah:

docker container ls

Namun jika kosong seperti Screenshot dibawah, berarti tidak ada container yang sedang berjalan. Sedangkan untuk mengetahui apa saja yang sudah dilakukan dengan container bisa jalankan perintah:

docker container ls -a

Kita akan mendapatkna informasi tentang ID container, nama image yang dijalankan, perintah yang sudah dilakukan, kapan dijalankan dan nama container. Untuk nama container disini saya juga belum paham, kalau sudah paham pasti akan saya jelaska di postingan berikutnya :D.

Isolasi Container

Nah ini fitur yang kebanyakan orang cari-cari pada Docker, mengisolasi container. Tujuan mengisolasi adalah untuk memisahkan antar container yang memiliki image sama tapi pengaturan/keperluan yang berbeda. Sebagai contoh kita akan membuat sebuah file dengan nama hello.txt, untuk memulainya jalankan docker container secara interaktif:

docker container run -it alpine /bin/ash

Kita menjalankan shell ash, yang dipunyai oleh Alpine. Untuk membuat file hello.txt menggunakan perintah echo,cek file yang telah dibuat dengan listing ls dan melihat isinya dengan perintah cat:

echo "hello world" > hello.txt

ls

cat hello.txt

exit

Setelah keluar dari container, jalankan lagi container dan listing lagi:

docker container run -it alpine /bin/ash

ls

Sekarang perhatikan hasil screenshot diatas, file hello.txt hilang? nah itulah yang namanya isolasi dalam Docker, jadi setiap menjalankan container akan membuat isolasi baru dengan begitu jika ada perubahan pada container dan perbuahan tersebut tidak sesuai dengan apa yang kita inginkan. Kita bisa kembali ke awal sebelum melakukan perubahan. Fitur isolasi inilah yang membuat mereka membuat naik daun, tapi apakah ada aplikasi serupa yang mempunyai fiutr seperti Docker? untuk saat ini saya belum mengeksplore lebih dalam dunia virtualisasi 😀

Selanjutnya kita akan mencoba mengakses file hello.txt, tapi sebelum itu jalankan perintah:

docker container ls -a

Kita akan mencoba mengakses container atau menjalankan ulang container yang ada file hello.txt, yang tentunya ada di Container ID dc7bde7461e1. Untuk menjalankan ulang container tersebut perlu perintah:

docker container start dc7bd

Sekarang cek container yang sedang berjalan dengan perintah:

docker container ls

Yang menjadi pertanyaan bagaimana mengakses container yang sedang berjalan? caranya cukup mudah:

docker container exec -it dc7bd ash

ls

File hello.txt sekarang sudah bisa diakses, jadi gimana main dockernya?mudah atau sulit? tapi grup sebelah selau bilang kalau sulit berarti bisa dilakukan tapi belum tahu cara yang optimal 😀

Sampai sini kita bermain dengan Docker, jika masih belum paham atau sedikit membingungkan silahkan komentar dibawah atau via grup facebook atau grup whatsapp Boxer 😀 atau bisa juga ikut kegiatan rutin Jagong biar langsung bisa ketemu sama penulis artikelnya hahahaha

Daftar Perintah

Untuk lebih memudahkan bermain Docker di tulisan saya ini, beriktu daftar perintah dan fungsinya:

  • Memasang Docker Image:
    docker image pull (nama image)
  • Listing Docker Image:
    docker image ls
  • Menjalankan Docer Container Image:
    docker container run (nama image) (perintah)
  • melihat history container yang pernah dijalankan
    docker container ls -a
  • menjalakan ulang container
    docker container start (Container ID)
  • melihat container yang berjalan
    docker congainer ls
  • mengakses container yang berjalan secara interaktif
    docker container exec -it (Container ID) (perintah)
  • menghentikan conatiner yang sedang berjalan
    docker kill (Container ID)

Sumber: https://www.training.play-with-docker.com

Share This Post

Leave a Comment

Your email address will not be published. Required fields are marked *