TeknoCerdas.com – Salam cerdas untuk kita semua. Tahukah anda dimana letak tersembunyi Linux pada Docker for Mac? Jika jawabannya belum maka maka lanjutkan membaca tulisan ini. Docker for Mac tetap memerlukan Linux untuk menjalankan Docker meskipun memakai Hyperkit sebagai hypervisor pengganti dari sebelumnya yaitu VirtualBox.
Berbeda dengan Docker Toolbox yang memerlukan VirtualBox. Versi terbaru Docker for Mac tidak memerlukan hypervisor besutan Oracle tersebut melainkan menggunakan hypervisor bawaan dari MacOS yaitu Hyperkit.
Kenapa pada Mac masih memerlukan sebuah hypervisor? Docker adalah container yang memerlukan kernel dari sistem opersi induk (Host) untuk berjalan. Setiap container adalah Linux image sehingga otomatis memerlukan Linux kernel yang berjalan pada sistem operasi induk.
MacOS bukanlah Linux, sama seperti Windows. Sehingga untuk menjalankan Docker, MacOS akan menjalankan Linux menggunakan virtual machine diatas hypervisor yaitu Hyperkit.
Itulah kenapa pada Docker for Mac terdapat konfigurasi jumlah CPU dan RAM yang harus disetup karena sejatinya setup tersebut untuk Linux VM yang akan menjalankan Docker.
Lokasi Linux pada Docker for Mac
Jika anda mengira bahwa lokasi container yang digunakan pada Docker for Mac ada di /var/lib/docker/
maka anda salah. Karena tidak directory bernama docker
pada /var/lib/
. Lantas dimana Docker for Mac menyimpan seluruh container?
Jawabannya adalah disk image. Lokasinya ada pada path berikut.
$ ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/
total 7458728
-rw-r--r-- 1 rioastamal staff 60G Aug 4 09:25 Docker.raw
Secara default Docker mengalokasikan 60GB untuk Linux VM yang menjalankan Docker. Lalu bagaimana cara masuk ke Linux VM yang menjalankan Docker.
Caranya adalah dengan mengakses terminal (tty) Linux menggunakan perintah screen
seperti dibawah ini.
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
Tampilan prompt pada terminal akan berubah yang berarti anda berada didalam Linux yang berjalan diatas Hyperkit.
docker-desktop:~# uname -a
Linux docker-desktop 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 Linux
Distribusi Linux yang digunakan oleh internal Docker adalah LinuxKit. Untuk membuktikan bahwa kita sedang berada didalam Linux yang menjalankan Docker, lihat isi dari direktori /var/lib/docker
.
docker-desktop:~# ls -lh /var/lib/docker/
total 52
drwx------ 2 root root 4.0K Jul 11 13:39 builder
drwx--x--x 4 root root 4.0K Jul 11 13:39 buildkit
drwx------ 3 root root 4.0K Jul 11 13:39 containerd
drwx------ 2 root root 4.0K Jul 19 10:24 containers
drwx------ 3 root root 4.0K Jul 11 13:39 image
drwxr-x--- 3 root root 4.0K Jul 11 13:39 network
drwx------ 33 root root 4.0K Aug 4 02:25 overlay2
drwx------ 4 root root 4.0K Jul 11 13:39 plugins
drwx------ 2 root root 4.0K Aug 4 02:25 runtimes
drwx------ 2 root root 4.0K Jul 11 13:39 swarm
drwx------ 2 root root 4.0K Aug 4 02:25 tmp
drwx------ 2 root root 4.0K Jul 11 13:39 trust
drwx------ 2 root root 4.0K Jul 19 10:25 volumes
Lihat ukuran disk yang digunakan oleh LinuxKit harusnya sama dengan ukuran disk image yang dialokasikan oleh Docker for Mac.
docker-desktop:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 389M 0 rom /
sr1 11:1 1 88K 0 rom
sr2 11:2 1 283.5M 0 rom /containers/services/docker
vda 254:0 0 59.6G 0 disk
└─vda1 254:1 0 59.6G 0 part /var/lib
Untuk keluar dari Screen gunakan kombinasi keyboard berikut.
CTRL+A lalu K
Lalu pilih y
untuk mematikan window. Harusnya nanti akan muncul sebuah indikator seperti berikut, yang menandakan bahwa screen telah dimatikan dan tidak terhubung dengan terminal Linux.
[screen is terminating]
Docker for Mac menyediakan integrasi yang lebih baik daripada Docker Toolbox. Dimana Docker for Mac menggunakan Hyperkit yang merupakan hypervisor bawaan dari MacOS.
Tapi tetap saja menjalakan Docker di MacOS tidaklah native karena masih harus ada Virtual Machine yang menjalankan Linux. Ini otomatis membuang ruang CPU dan RAM ketika anda menyalakan Docker tetapi tidak aktif menggunakannya. Tapi, itu masih lebih baik daripada harus menginstal VirtualBox terlebih dulu.