Docker, bir konteyner (container) yönetim hizmetidir. Docker, daha geniş bir tanım ile geliştiricilere tüm bağımlılıklarıyla (kütüphaneler (libraries), çerçeveler (frameworks) vb.) bir container üzerinde uygulama geliştirmesi, devreye almasını, izlenmesini ve çalıştırmasına yardımcı olan bir sanallaştırma yazılımıdır. Bu sayede geliştirici uygulamasını çok hızlı bir şekilde sunucu ortamına taşıma fırsatı yakalamış olur. İlk sürümü Mart 2013’te tanıtılan Docker, o günden bu yana popülaritesi daha da arttırmıştır. Container içinde bir işletim sistemi olabileceği gibi sadece o uygulama özgü bağımlılıklarda olabilir. Bu öğreticinin amacı derslerimde kullanılan yazılım ortamlarını Docker ortamına taşımak için öğrencilerime ön bilgi vermektir. Diğer taraftan Türkçe literatürü zenginleştirmeyi ve yazılım dünyasına meraklı kişileride bu ortama çekmeyi amaçlıyorum.
Aslında bir yazılımı tüm bağımlıkları ile tek bir container düzeyine indirme fikri eskiye dayanır. Bunu ilk yapan işletim sistemi düzeyinde sanallaştırma yapan Linux Containers (LXC) tek Linux çekirdeği üzerinden birden fazla container’ı kontrol etmiştir. Ancak, LXC üzerinde bu sistemi kurmak için işletim sistemi çok iyi bilinmeli ve buna uygun kodlar yazılmalıydı. Bir anlamda düşük seviye bir geliştirme ortamı sunuyordu. Docker, bize daha yüksek seviye kontroller ve işletim sistemini düşünmeden container oluşturmamıza olanak sağladı. (Programlama dilleri dersi veren bir öğretim üyesi olarak düşük seviye ve yüksek seviye üzerinden açıklamaya çalıştım, bilmeyenler ayrıntısını araştırsın.)
Kaynaklar:
- https://docs.docker.com/get-started/overview/
- https://en.wikipedia.org/wiki/LXC
- https://en.wikipedia.org/wiki/Virtual_machine
- https://www.simplilearn.com/tutorials/docker-tutorial
- https://github.com/gkandemi/docker
- https://www.weave.works/blog/a-practical-guide-to-choosing-between-docker-containers-and-vms
- https://blog.knoldus.com/docker-components/