docker run Parametreleri

Detaylı docker run kullanımı ve tüm parametreler

Temel Parametreler

ParametreAçıklamaÖrnek
-d, --detachArka planda çalıştırdocker run -d nginx
-p, --publishPort yönlendirme-p 8080:80
--nameContainer adı--name myapp
-e, --envEnvironment variable-e MYSQL_ROOT_PASSWORD=123
-v, --volumeVolume bağlama-v /host:/container
--rmDurduğunda sildocker run --rm nginx
-itInteractive + TTYdocker run -it ubuntu bash
--networkNetwork belirle--network mynet
--restartYeniden başlatma politikası--restart unless-stopped

Port Yönlendirme

# Host:Container
docker run -d -p 8080:80 nginx

# Belirli IP'ye bağla
docker run -d -p 127.0.0.1:8080:80 nginx

# Rastgele host portu
docker run -d -p 80 nginx

# UDP port
docker run -d -p 53:53/udp dns-server

# Çoklu port
docker run -d -p 80:80 -p 443:443 nginx

Environment Variables

# Tek değişken
docker run -e MYSQL_ROOT_PASSWORD=secret mysql

# Çoklu değişken
docker run \
  -e MYSQL_ROOT_PASSWORD=secret \
  -e MYSQL_DATABASE=myapp \
  -e MYSQL_USER=appuser \
  -e MYSQL_PASSWORD=apppass \
  mysql

# Dosyadan yükle
docker run --env-file .env mysql

.env Dosyası Örneği

# .env dosyası
MYSQL_ROOT_PASSWORD=secret
MYSQL_DATABASE=myapp
MYSQL_USER=appuser
MYSQL_PASSWORD=apppass

Volume Bağlama

# Bind mount (host dizini)
docker run -v /var/www/html:/usr/share/nginx/html nginx

# Named volume
docker run -v mydata:/var/lib/mysql mysql

# Read-only
docker run -v /config:/etc/app:ro myapp

# Anonymous volume
docker run -v /data myapp

Restart Politikaları

PolitikaAçıklama
noYeniden başlatma (varsayılan)
alwaysHer zaman yeniden başlat
unless-stoppedManuel durdurulmadıkça başlat
on-failure[:max]Hata durumunda başlat (max deneme)
docker run -d --restart always nginx
docker run -d --restart unless-stopped nginx
docker run -d --restart on-failure:3 myapp

Kaynak Limitleri

# Memory limiti
docker run -m 512m nginx
docker run --memory 1g nginx

# CPU limiti
docker run --cpus 0.5 nginx
docker run --cpu-shares 512 nginx

# Kombinasyon
docker run -d \
  --memory 512m \
  --cpus 1 \
  --name limited-app \
  myapp

Pratik Örnekler

# MySQL
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=rootpass \
  -e MYSQL_DATABASE=myapp \
  -v mysql_data:/var/lib/mysql \
  --restart unless-stopped \
  mysql:8.0

# PostgreSQL
docker run -d \
  --name postgres \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=pgpass \
  -e POSTGRES_DB=myapp \
  -v pg_data:/var/lib/postgresql/data \
  --restart unless-stopped \
  postgres:16

# Redis
docker run -d \
  --name redis \
  -p 6379:6379 \
  -v redis_data:/data \
  --restart unless-stopped \
  redis:alpine redis-server --appendonly yes