Docker'ı incelemeye yeni başladım ve benim için kafa karıştırıcı bir şey var. Docker'ın web sitesinde okuduğum gibi, bir konteyner sanal makineden farklı. Anladığım kadarıyla bir kapsayıcı, içinde bütün bir yalıtılmış dosya sisteminin çalıştığı bir sanal alandır.
Ayrıca bir konteynerin bir Konuk İşletim Sistemi yüklü olmadığını da okudum. Bunun yerine, temel işletim sistemi çekirdeğine güvenir.
Bunların hepsi iyi. Kafam karıştı, işletim sistemlerinden sonra adlandırılmış Docker görüntüleri var. Ubuntu, Debian, Fedora, CentOS ve benzeri görüntüler görüyoruz.
Demek istediğim: bu görüntüler nedir, gerçekten? Debian imajına dayalı bir konteyner oluşturmak, bir Sanal Makine oluşturmak ve Debian'ı kurmaktan ne kadar farklıdır?
Konteynerlerin hiçbir Konuk İşletim Sistemi yüklü olmadığını sanıyordum, ancak resimler oluştururken bunları bir işletim sisteminden sonra adlandırılan bazı resimlere dayandırıyoruz.
Ayrıca, yaptığımız zaman gördüğüm örneklerde docker run ubuntu echo "hello world"
, bir VM'yi Ubuntu ile döndürüyor ve komutu çalıştırıyoruz echo "hello world"
.
Aynı şekilde yaptığımızda docker run -it ubuntu /bin/bash
, bir VM'yi Ubuntu ile döndürüyoruz ve komut satırını kullanarak erişiyoruz.
Her neyse, işletim sisteminden sonra adlandırılan görüntüler neyle ilgili? Bu görüntülerden biriyle bir konteynır çalıştırmak ve ilgili Misafir işletim sistemi ile bir VM'yi döndürmek ne kadar farklıdır?
Çekirdeği sadece ana işletim sistemi işletim sistemiyle paylaştığımız fikri (ve dolayısıyla donanımın sanallaştırılması gerekmeksizin temel makine donanım kaynaklarına erişimimiz var), ancak yine de her bir farklı sistemin dosyalarını ve ikili kodlarını sırasıyla kaplarda kullanın. Çalıştırmak istediğimiz herhangi bir uygulamayı desteklemek için?