Docker Nedir?
Merhabalar🙋♀️, bugün sizlere bir container teknolojisi olan Docker’dan bahsedeceğim.
Docker, uygulamaların hızlı derlenip test edilmesine ve dağıtılmasına imkan tanıyan bir container teknolojisidir. Sanal makineden farklı olarak, işletim sistemi oluşturmak yerine, Linux çekirdeğini paylaşarak birbirinden izole ve bağımsız binlerce processler(containerlar) sayesinde sanallaştırma sağlar.
Kurulum Linki: https://docs.docker.com/get-docker/
Bilinmesi Gereken Terimler:
— İmage: Çalıştırmak istediğimiz uygulamaların paketlenmiş halleridir.
— Container: Paketlenmiş imageleri çalıştırabileceğimiz alanlardır.
— Dockerfile: Localimizde çalışan projeden image üretmek için kullanacağımız config dosyasıdır.
— Docker Registry: İmagelerin saklandığı yeri temsil eder.
— Docker Engine: Linux çekirdeğinin üzerinde çalışır.
— Docker Machine: Bir veya birden fazla sistem üzerine “Docker Engine” yüklemek için kullanılır.
— Docker Daemon: Containerların birbirlerinden izole bir şekilde çalışmasını sağlamak için gerekli ortamları sağlar.
— Docker CLI: Kullanıcının Docker Daemon ile konuşabilmesi için gerekli komut setini sağlar.
NOT — Docker, Linux Kernel e eklenen Linux Containers (LXC) üzerine kurulu bir teknolojidir. Docker client-server yapısını kullanır. Mac ve Windows’da Docker kendi Linux’unu kurarak sanal bir Linux üzerinde çalışıyor. Yani serverını oluşturuyor. (Client tarafı sizin kendi hostunuz oluyor server tarafı ise Dockerın çalıştığı host oluyor.) Bizde client dan ona hangi container nı oluşturması gerektiğini neyin nasıl olması gerektiğini söylüyoruz.
DOCKER CLI ile Docker’ı Tanıma Yolculuğu
—docker version : Docker’ı kurduk amaaa gerçekten kurulmuş mu diye kontrol etmek için bu komutu koşturun. Eğer kurulmuşsa docker version bilgilerini verecektir.
— docker pull <image>: DockerHub’dan istediğimiz image i dowload edelim. Ben nginx ‘i dowload ettim.
— docker images: İmageleri listeler.
— docker run <image>: İlgili imageden yeni bir container oluşturulur ve container çalıştırılır.
— docker rmi <image>: İmage i siler.
— docker ps: Containerlar listelenir.
Daha önce koşan ve işlemini tamamlayıp çıkan containerları listelemek için docker ps -a komutunu kullanabiliriz.
— docker start -a <CONTAINER ID>: Çıkış yapan containeri tekrar çalıştırmak için kullanılır.
— docker restart <CONTAINER ID>: Containerı yeniden başlatmak için kullanılır.
— docker rm <CONTAINER ID>: Sadece çıkış yapmış containerlar silinebilir. docker rm -f <CONTAINER ID> ile container çalışır durumda olsa bile silinir.
— docker stop <CONTAINER ID>: Bu komut ile container durdurulur. Yukarıda çalışır durumda olan containeri silmek için kullanılan komutu kullanmak istemiyorsak ilk önce containerı durdurur ardından docker rm <CONTAINER ID> komutunu kullanarak containerı silebiliriz.
— docker exec -it <CONTAINER ID> bash : Containera erişir ve containerın içindeki komutları çalıştırır.(Container’a bir Bash Shell açar.)
— docker cp <CONTAINER ID>:<kopyalanacak yol> <local yol>: Container’daki bir dosyayı locale kopyalar.
Dockerfile Oluşturma
Örnek olarak, bir react projesi oluşturan bir Dockerfile oluşturalım, bunun için uzantısı olmayan Dockerfile adında bir dosya oluşturalım:
Dosyayı oluşturduktan sonra dosyanın bulunduğu klasöre gidip “docker build . “ komutu koşulur.
Şimdi imagelerimizi kontrol edelim.
İmageleri listelerken yeni oluşturduğumuz image’in bir repository ve tagı olmadığını gördük.
— docker tag <image id> <repository>:<tag> : Repository ve tag eklemek için kullanılır.
Docker Compose Nedir?
Compose ile birlikte birden fazla Container tanımı tek bir dosyada yapılabilir. Development ve test ortamı için kullanılır. Docker Compose bu ortamlarda kolay kurulum, bakım ve genel olarak kullanım sağlamaktadır. Kısaca, biz dizi farklı Container’ları kolay bir şekilde başlatma, düzenleme ve yönetme işini yapar.
docker-compose.yml isimli bir dosya oluşturulur. Bu dosyada çalıştırmak istediğimiz imageleri hangi port da hangi volume da çalıştırmak istediğimizi belirtiriz.
Not: Bu dosyada detayları verilen ve birbiriyle ilişkileri tanımlanan containerlar tek bir komut ile koşturulabilir, durdurulabilir veya kaldırılabilir.
Hemen docker-compose.yml dosyası oluşturalım. (Öncelikle 2 html dosyası oluşturdum servisler için)
docker-compose up: docker-compose.yml dosyasının içerisindeki serviceleri ayağa kaldırır.(yml’ın bulunduğu dizinde bu komutu koşun)
docker-compose up -d: Bu komut servisleri ayağı kaldırıp çıktıyı verip çıkar. Yukarıdaki komut gibi dinamik değildir.
docker-compose ps: yml dosyasının bulunduğu dizinde çağırılınca compose tarafından başlatılan containerları listeler.
docker-compose down: Composer’ın yarattığı bütün containerleri durdurur ve siler.
docker-compose exec <service> bash: Çalışmakta olan Container’da bir komut koşturmak için kullanılır.
Okuduğunuz için teşekkür ederim 😇.
Kaynaklar: