Docker Nedir?
Docker, uygulamaların farklı ortamlarda çalıştırılması sürecinde kullanılan bir platformdur. Uygulamamızı derler, ölçeklendirir, paketler ve dağıtmamızı sağlar. Docker içerisinde barındırdığı container yapısını ve Docker Hub üzerinden indirilen image’ları kullanarak ürünü farklı işletim sistemi, versiyon ve environment’larla birbirinden izole şekilde çalıştırır; yeterli kaynak ve gerekli yapılandırmalar ile birlikte kullanıldığında, yapısal problemleri ortadan kaldırarak uygulamalarımızı stabil bir şekilde çalışabilecek hale getirir.
Hangi Platform ve Dilleri Destekler?
Docker, Windows, Mac ve Linux üzerine kurulabilir.
• Java, C#, Python, Php, Grovy, Ruby gibi pek çok dili destekler.
Docker Ne İşe Yarar?
Bir ürünün geliştirilip müşteriye sunulması sürecinde belli süreçler ve ortamlar bulunmaktadır. Bu ortamlar birbirinden farklı platform, versiyon ve environment’lara sahiptir. Bu altyapının oluşturulması için farklı yöntemler bulunmaktadır. Uzun yıllardır Sanallaştırma (Virtualization) teknolojisi kullanılırken artık Container (Conterization) teknolojisine geçiş başlamıştır.
Virtualization (Sanallaştırma) Nedir?
Bir yüksek kapasiteli sunucu üzerine kurulan sanal bilgisayarlardır. Her sanal bilgisayar sunucunun kaynaklarını kullanır ve içerisine farklı işletim sistemleri, uygulama ve uygulama gereksinimleri bulunmaktadır. Aşağıdaki görselde bir sanallaştırma altyapısı bulunmaktadır. 3 adet sanal makine bir sunucu üzerine kurulmuştur.
Containerization (Konteynerleştirme) Nedir?
Containerization, bir sunucu üzerindeki işletim sisteminin diğer container’lar tarafından paylaşılması demektir. Birbirinden farklı uygulamalar, dağıtımlar ve envrionment’ları birbirinden izole şekilde çalıştırır. Aşağıdaki görselin bir Linux ubuntu sunucusu olduğunu varsayalım, ortamlar birbirinden farklı dağıtımlara (Fedora, CentOs, Debian), farklı environment’ ara ve kütüphanelere sahip olabilirler. Docker Hub üzerinden istenen image’lar indirilir ve Docker sunucu sistemindeki kernel’ı kullanarak belirtilen dağıtım üzerinde uygulamamızı çalıştırır.
Bu gibi farklı işletim sistemleri, versiyonları ve farklı environmentlarla uygulamalarımızı konteynerleştirebiliriz.
Sanallaştırma vs. Konteynerleştirme
Nasıl Yüklenir? (Windows)
1. https://hub.docker.com/editions/community/docker-ce-desktop-windows/ adresine gidilir.
2. GetStable‘e tıklayıp indirme işlemi başlatılır.
3. Paketlerin indirilmesi beklenir.
4. OK’e basılır.
5. Paketlerin çıkarılması beklenir.
6. Close diyerek yükleme işlemini tamamlıyoruz.
Nasıl Yüklenir? (Linux – Ubuntu)
1. https://docs.docker.com/engine/install/ubuntu/ adresine gidilir.
2. İşletim sistemi gereksinimleri kontrol edilir.
$ cat /etc/*release*
Docker, Ubuntu 18.04 e yüklenebilir durumda.
3. Docker eski versiyonları varsa silinir.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
4. Curl ile Script dosyası indirilir.
$ Curl -fsSL https://get.docker.com -o get-docker.sh
5. Script çalıştırılır.
$ sudo sh get-docker.sh
6. Docker versiyonu ve yüklendiği kontrol edilir.
$ sudo docker version
En Çok Kullanılan Docker Komutları Nelerdir?
build: Belirtilen image’ı build edip yükler.
$ cd "imageExample"
$ docker build –t <image name>
pull: Belirtilen image’ı Docker hub üzerinden yükler.
$ Docker pull <image Name>: <versiyon>
run: Yüklenen image’ları çalıştırır.
$ Docker run <image name>
stop: Belirtilen container’ı durdurur.
$ Docker stop <container id, name>
images: Yüklenen image’ları gösterir.
$ Docker images
ps: Çalışan containerleri listeler.
$ Docker ps
ps-a: Çalışan ve çalışmayan tüm containerlerı listeler.
$ Docker ps –a
exec: Container içerisinde işlem yapmak için kullanılır.
$ Docker exec <container id , name> <komut>
–help: Öncesindeki komut hakkında bilgi verir.
$ Docker <komut> —help
–logs: Container logunu ekrana basar.
$ Docker logs <container id>
inspect: Belirtilen öğenin bilgilerini getirir.
$ Docker inspect <container id, volume name, ...>
rm: Belirtilen container’ı siler.
$ Docker rm <container id>
rmi: Belirtilen image’ı siler.
$ Docker rmi <image name>
-t: Container’e isim vermek için kullanılır.
$ Docker build –t <image name> .
-p: Port vermek için kullanılır.
$ Docker run –p <port>: <Docker port>
-e: Environment dışarıdan verildiğinde kullanılır.
$ Docker run -e <environmentName> = "value" <image name>
-d: Image’ı arka planda başlatır.
$ Docker run -d <image name>
Fırat Çelik
Yazılım Test Mühendisi