Docker’ı kurduktan ve hello-world‘ü çalıştırdıktan sonra doğal soru şudur: günlük işlerde hangi komutlara ihtiyacım olacak? Bu yazıda, neredeyse her Docker kullanıcısının her gün elle yazdığı temel komutları, ne işe yaradıklarını açıklayarak bir arada topluyoruz — bir nevi başvuru kartı.
Container’ları listelemek ve incelemek
# Sadece çalışan container'ları listele
docker ps
# Durdurulmuş olanlar dahil TÜM container'ları listele
docker ps -a
# Bir container'ın canlı log çıktısını izle
docker logs -f ilk-sunucum
# Çalışan bir container'ın kaynak kullanımını (CPU/RAM) canlı izle
docker stats
Container yaşam döngüsü: başlat, durdur, sil
# Arka planda (-d) çalıştır, isim ver, port eşle
docker run -d --name ilk-sunucum -p 8080:80 nginx:alpine
# Durdur / tekrar başlat
docker stop ilk-sunucum
docker start ilk-sunucum
# Durdur ve sil (container'ın içindeki veri de kaybolur)
docker rm -f ilk-sunucum
docker stop ile docker rm farklı şeylerdir: stop container’ı sadece durdurur, diskte kalır ve start ile tekrar ayağa kaldırılabilir. rm ise container’ı tamamen siler — içindeki, bir volume’e yazılmamış her veri de gider.
Çalışan bir container’ın içine girmek
Bir container’ın içinde neler olup bittiğini görmek veya elle bir komut çalıştırmak için exec kullanılır:
# Container içinde etkileşimli bir kabuk (shell) aç
docker exec -it ilk-sunucum sh
# Tek seferlik bir komut çalıştır (kabuğa girmeden)
docker exec ilk-sunucum ls /usr/share/nginx/html
-it bayrağı iki ayrı bayrağın birleşimidir: -i (interactive, giriş akışını açık tutar) ve -t (bir terminal (tty) tahsis eder). İkisi birlikte, tıpkı bir SSH oturumu gibi container içinde gezinmenizi sağlar.
İmajları yönetmek
# Yerelde indirilmiş tüm imajları listele
docker images
# Bir imajı Docker Hub'dan indir (çalıştırmadan)
docker pull postgres:16
# Kullanılmayan (hiçbir container'ın referans etmediği) imajları sil
docker image prune
# Belirli bir imajı sil
docker rmi postgres:16
Disk alanını temizlemek
Zamanla durmuş container’lar, kullanılmayan imajlar ve yetim (dangling) imajlar ve kullanılmayan anonim volume’ler disk alanı kaplamaya başlar. Tek komutla genel bir temizlik yapabilirsiniz:
# Durmuş container'ları, kullanılmayan ağları ve
# "dangling" imajları temizler (volume'lere dokunmaz)
docker system prune
# Kullanılmayan ANONİM volume'leri de dahil et (isim verdiğiniz volume'lere dokunmaz)
docker system prune --volumes
# Hiçbir container'a bağlı olmayan İSİMLİ volume'ler de silinsin (DİKKAT: veri kaybı!)
docker volume prune -a
# Ne kadar disk alanı kullanıldığını gör
docker system df
Sık kullanılan bayraklar — hızlı referans
| Bayrak | Anlamı |
|---|---|
-d |
Arka planda (detached) çalıştır |
-p host:container |
Host portunu container portuna eşle |
-v host:container |
Bir dizini/volume’ü container’a bağla |
-e DEĞİŞKEN=değer |
Ortam değişkeni tanımla |
--name |
Container’a okunabilir bir isim ver |
--rm |
Container durunca otomatik sil |
--network |
Container’ı belirli bir ağa bağla |
Bu komutlar günlük işlerinizin büyük çoğunluğunu karşılar. Verinizi container’ın yaşam döngüsünden bağımsız kalıcı hale getirmek istediğinizde (örneğin bir veritabanı için) devreye volume‘ler girer — bunu Docker Derinlemesine bölümündeki ilgili yazımızda ele alıyoruz.