Örneklerle temel docker komutları

Örneklerle temel docker komutları

Google, IBM ve Microsoft gibi popüler teknoloji şirketlerinin de kullanımıyla popüler bir hal kazanan Docker temel komutlarını örneklerle inceliyoruz.
Merve Özdeş27 Mar 2023

Bu yazımda, sizlere temel Docker komutlarından bahsedecek, komutları açıklamaları ve örnekleriyle birlikte anlatacağız. Böylece, Docker Hub’dan bir image indirmeyi, bir container’ı (kapsayıcı) çalıştırabilmeyi, durdurabilmeyi veya silebilmeyi öğreneceksiniz.


 

  • docker

Docker kurulu bir sistemde komut satırından bu komutu yazıldığında, Docker ile ilgili komut ve parametreler listelenecektir.


 


 

  • docker version

Docker’ın versiyonunu görmek için kullanılır. Aşağıdaki gibi bir çıktı üretir.


 

  • sudo systemctl status docker

Docker servisinin durumu öğrenmek için kullanılır. Docker’ın o an aktif olup olmadığını gösterir. Eğer docker servisiniz inactive durumdaysa, servisinizi başlatmanız gerekmektedir.


 

  • sudo systemctl start docker

Bu komut ile Docker servisi başlatılabilir.


 

Docker komutlarının “sudo” ile çalıştırılması gerekmektedir. “sudo” yazmadan docker komutlarını kullanabilmek için mevcut kullanıcının Docker grubuna eklenmesi gerekmektedir. Bunun için kendi kullanıcınızla terminaldeyken aşağıdaki komutları girebilirsiniz.


 

$ sudo usermod -aG docker 
$ su –

Yukarıdaki  ile belirtilen kısma eklemek istediğiniz kullanıcıyı girmeniz gerekmektedir. Bundan sonraki komutlar sudo kullanılmadan verilecektir.


 

  • docker images

Bu komutla makinenin içerisinde çalıştırılabilir Docker image’leri detaylı bir şekilde listelenir. Aşağıda da görüldüğü gibi makinemizde bulunan image’ler detaylı bir biçimde listelendi. 


 

  • docker run

Hem container oluşturmak hem de onu çalıştırmak için kullanılır. Create ve start komutunun yaptığını tek seferde yapar.

docker run = docker create + docker start

Örneğin hello-world container’ını çalıştırmak isteyelim:

docker run hello-world

Yukarıdaki komutu yazdığınızda hello-world image’i lokalde aranır ve bu image lokalinizde yoksa docker hub’dan indirilir. Tekrar aynı komutu girdiğinizde bir uyarı vermeden direkt çalıştırılır. Yukarıda listelediğimiz image’ler arasında hello-world de bulunduğu için bu komut ile direkt çalıştırmış olacağız.


 

  • docker ps

Çalışan container’ları listelemek için kullanılır. Bu aşamada herhangi bir container çalıştırmadığımız için liste boş dönmüştür.


 

  • sudo docker ps –a

Daha önceden çalıştırılıp sonradan durdurulan container’ları listeler.


 

  • docker login/docker logout

Docker login ve logout komutları ile Docker Hub sayfasından oluşturulan hesaba giriş yapılabilir ve oturumdan çıkılabilir. Komut satırından yukarıdaki login komutu ile giriş yaparak image yükleyebilir veya image çekebilirsiniz. 


 

  • docker pull

Pull  komutu ile istenen image Docker Hub’dan kullanılan makineye çekilebilir.


 

Bir container’ı çalıştırmak, durdurmak ve silmek için kullanılan komutlar

Daha önce de belirttiğimiz gibi run komutu ile bir container çalıştırılabilir. Örnek olarak postgresql container’ına bağlanalım. Bunun için docker hub’da postgresql yazarak arama yaparsanız aşağıdaki gibi bir sonuç gelecektir. 

 

 

En yukarıda listelenen Docker official image en güvenilir olanıdır. Biz de onu seçerek devam edeceğiz. Official olanı seçtiğinizde bu image hakkında bilgiye, versiyonlarına ve nasıl kullanılacağına ulaşabilirsiniz.

 

 

docker run postgres  ile en son sürüm etiketiyle bağlanılır. Ancak öze bir sürüm kullanılmak istendiğinde aşağıdaki gibi belirtilmesi gerekmektedir.

docker run --name docker_postgres –e POSTGRES_USER=postgres –e POSTGRES_PASSWORD=1234 –d postgres:13

Şimdi burada geçen ifadeleri açıklayalım:

--name: Bu değişken ile container’a dilediğiniz bir isim verebilirsiniz.

-e: Ortam değişkeni (environment variable) tanımlamak için kullanılır. Her container’ın kendine ait ortam değişkenleri olur. Bu değişkenlere docker hub’da istediğiniz container’ı aratarak erişebilirsiniz.

-POSTGRES_USER:  Bu isteğe bağlı ortam değişkeni, bir kullanıcıyı ve parolasını ayarlamak için POSTGRES_PASSWORD ile birlikte kullanılır. Belirtilmezse, postgres'in varsayılan superuser kullanıcısı olan postgres parolası kullanılacaktır.

-d (--detach): Container’ı arkaplanda oluşturur ve container ID’sini ekrana yazdırır. 

postgres:13: Burada farklı tag’ler kullanabilirsiniz. Bu tag’lere docker hub sayfasından ulaşabilirsiniz. Biz aşağıda da listelenen tag’lerden 13 tag’ını kullandık.

 

 

Daha önce bu image makinemizde bulunmadığı için komutu girdiğimizde image docker hub’dan indirilir.


 

Tekrar container’larımızı listelediğimizde artık postgres’in bu yeni versiyonunu da göreceğiz. Tag’leri versiyon olarak düşünebilirsiniz. Artık makinemizde hem 10 hem de 13 tag’ine sahip postgres image’ımız bulunmakta.


 

Oluşturulan container’ı tekrar başlatmak için run etmemize gerek yoktur. Container id veya container name ile start yapabiliriz.

 

Docker container start docker_postgres


 

Bir container’a bağlanma

Çalıştırdığımız postresql container’ı ile etkileşime nasıl geçebiliriz? Image’ımız yukarıdaki sonuçlardan da gördüğünüz gibi postgres:13, container’ımız ise docker_postgres. postgres:13 image’ından docker_postgres isimli container’ı yarattık.

Gelin elimizi biraz kirletelim ve çalışan docker_postgres container’ımızın içinde bir terminal açalım:

 

docker container exec –it docker_postgres /bin/bash

 

ile aşağıdaki gibi bir sonuç elde edeceksiniz. Prompt’un nasıl değiştiğine ve Container ID’yi içerdiğine dikkat edin. Kullanıcınız artık root oldu. 


 

Artık container’ın içerisindeyiz. Bir işletim sisteminin terminalini kullandığınız gibi burada da o komutları çalıştırabilirsiniz. Örneğin ls komutunu deneyelim:


 

exit komutu ile çıkış yapabilirsiniz.

Peki, /bin/bash yerine direkt postgresql shell’ine bağlanmak istersek:

docker container exec –it docker_postgres psql –U postgres


 

Şu an postgresql’in shell’indeyiz. Burada veritabanı işlemleri yapabiliriz.

\l ile veritabanlarını listeleyebilir, Postresql shell’den çıkmak için \q komutu kullanılabilir.


 

Bir container’ı durdurma

Aşağıdaki komutlar ile bir container durdurulabilir:

docker container stop

veya

docker container stop


 

Bir container’ı silme

docker rm

veya

docker rm

Komutları bir container’ı silmek için kullanılabilir. Eğer silinmek istenen container halihazırda çalışıyorsa, bu komutu çalıştırıldığında hata ile karşılaşılır. Silinmek istenen container’ın öncelikle durdurulması gerekmektedir.

Daha önce oluşturduğumuz docker_postgres isimli container’ımızı silelim ve tüm container’ları docker container ls –a komutu ile listeleyelim. Çıkan sonuçtan artık postgres:13’ün listelenmediğini görebilirsiniz. 


 

Container silindikten sonra docker container start docker_postgres komutu hata verecektir. Bunun nedeni artık ilgili container’ın makinemizde bulunmamasıdır.


 

Tüm container’ların kaldırılması

docker system prune

Komutu ile tüm container’ları kaldırabiliriz.

 

Bu yazıda en çok kullanılan Docker komutlarını sizlerle paylaştım. Tabii docker komutları sadece bunlarla sınırlı değil. Yazının başında docker komutu ile listelediğimiz komutlardan da gördüğünüz gibi kullanabileceğiniz çok daha fazla komut mevcut. Sizler de Docker’ı etkin bir şekilde kullanmak ve Docker komutlarına hakim olmak istiyorsanız Miuul’un Production Level Data Science programını inceleyebilirsiniz. 'Veri Bilimcileri' ve adaylarını teknik yönden güçlendirmek, onları container ortamlarıyla tanıştırmak, farklı model dağıtım seçenekleri hakkında bilgiyle donatarak yeterli pratikliği kazandırmayı hedefleyen bu program, kendinizi bu alanda geliştirmeniz için kaçırılmayacak bir fırsat sunuyor.


 

Kaynaklar

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.