Temel Parametreler
| Parametre | Açıklama | Örnek |
-d, --detach | Arka planda çalıştır | docker run -d nginx |
-p, --publish | Port yönlendirme | -p 8080:80 |
--name | Container adı | --name myapp |
-e, --env | Environment variable | -e MYSQL_ROOT_PASSWORD=123 |
-v, --volume | Volume bağlama | -v /host:/container |
--rm | Durduğunda sil | docker run --rm nginx |
-it | Interactive + TTY | docker run -it ubuntu bash |
--network | Network belirle | --network mynet |
--restart | Yeniden 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ı
| Politika | Açıklama |
| no | Yeniden başlatma (varsayılan) |
| always | Her zaman yeniden başlat |
| unless-stopped | Manuel 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