EğitimlerKonteynerler ve Docker
Debian 12 ve 13'e Docker Engine nasıl kurulur
Docker Engine'i Buildx ve Compose eklentileriyle Docker'ın resmi apt deposundan Debian 13 Trixie veya Debian 12 Bookworm'a kurun ve güvenli hale getirin.
- Başlangıç
- 15 dk okuma
- Güncellendi
Denendiği sistemler: Debian 12, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — Çakışan paketleri kaldırın
- Adım 2 — Docker'ın apt deposunu ekleyin
- Adım 3 — Docker Engine'i ve eklentileri kurun
- Adım 4 — Docker'ı sudo olmadan çalıştırın (isteğe bağlı)
- Adım 5 — Log döndürmeyi açın
- Adım 6 — Yayınlanan portları güvenlik duvarının arkasında tutun
- Docker'ı güncelleme
- Yedekleme ve geri yükleme
- Docker'ı kaldırma
- Sorun giderme
- sudo: command not found
- Package 'docker-ce' has no installation candidate
- permission denied while trying to connect to the Docker daemon socket
- Güvenlik duvarı kurallarını değiştirdikten sonra konteynerlerin ağ erişimi yok
- Disk doluyor
- Sonraki adımlar
Docker Engine, bu kütüphanedeki self-hosted uygulamaların ve yapay zeka araçlarının çoğunun arkasındaki konteyner çalışma ortamıdır. Debian'da Buildx ve Compose eklentileriyle güncel bir Docker edinmenin en temiz yolu Docker'ın kendi apt deposudur. Bu rehber depoyu Debian 13 (Trixie) veya Debian 12 (Bookworm) üzerinde kurar; ardından Docker'ı sudo olmadan çalıştırmayı, log döndürmeyi, yayınlanan portlarla ilgili güvenlik duvarı uyarısını, güncellemeleri, yedeklemeyi ve sık görülen hataları anlatır.
Ön koşullar
- Debian 13 (Trixie) veya Debian 12 (Bookworm) çalıştıran bir sunucu. Docker, Debian için amd64, arm64, armhf ve ppc64le paketleri yayınlar.
sudoyetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı. En küçük Debian kurulumundasudobulunmayabilir; hesabı hazırlamak için Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerine bakın.download.docker.comadresine ve imaj çekeceğiniz kayıtlara giden HTTPS erişimi.
Docker belgeleri Docker Engine için en düşük CPU veya bellek değeri vermez; servisin kendisi küçüktür. Sunucuyu çalıştıracağınız konteynerlere göre, her uygulama rehberindeki gereksinimlerle boyutlandırın ve /var/lib/docker altındaki imajlar, loglar ve volume'lar için diskin en az %20'sini boş tutun.
Adım 1 — Çakışan paketleri kaldırın
Debian arşivi, Docker Engine ile çakışan Docker ile ilgili paketler içerir. Kurulu olanları kaldırın:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc docker-buildx podman-docker containerd runc | cut -f1)Hiçbiri kurulu değilse dpkg "no packages found" uyarıları verir ve kaldırılacak bir şey olmaz. /var/lib/docker içindeki mevcut imajlar, konteynerler ve volume'lar korunur.
Adım 2 — Docker'ın apt deposunu ekleyin
İmza anahtarını almak için gereken araçları kurun, Docker'ın GPG anahtarını kaydedin ve depoyu deb822 biçiminde ekleyin:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascsudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updateSuites değeri trixie veya bookworm olur. apt'nin artık Docker'ın paketini sunduğunu doğrulayın:
apt-cache policy docker-ceCandidate satırı https://download.docker.com/linux/debian adresini göstermelidir.
Adım 3 — Docker Engine'i ve eklentileri kurun
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginDebian'da servis kendiliğinden başlar ve açılışta etkinleştirilir. Kontrol edin ve test konteynerini çalıştırın:
sudo systemctl status docker --no-pager
sudo docker run --rm hello-world
docker compose versionÖnce "Hello from Docker!" iletisini, ardından Compose eklentisinin sürümünü görmelisiniz.
Adım 4 — Docker'ı sudo olmadan çalıştırın (isteğe bağlı)
Yönetici kullanıcınızı docker grubuna ekleyin, ardından yeni bir oturum açın (veya newgrp docker çalıştırın):
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-worldPaket grubu genellikle zaten oluşturduğu için groupadd grubun var olduğunu bildirebilir.
Adım 5 — Log döndürmeyi açın
Varsayılan json-file sürücüsüyle konteyner logları sınırsız büyür. Yeni konteynerleri, logları döndüren ve sıkıştıran local sürücüsüne geçirin:
sudo tee /etc/docker/daemon.json <<'EOF'
{
"log-driver": "local",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
sudo systemctl restart docker
docker info | grep -i "logging driver"Çıktı Logging Driver: local olmalıdır. Değişiklikten önce oluşturulan konteynerler, siz onları yeniden oluşturana kadar (örneğin docker compose up -d --force-recreate ile) eski ayarlarını korur.
Adım 6 — Yayınlanan portları güvenlik duvarının arkasında tutun
Ana makine adresi belirtilmeden yayınlanan bir port (-p 8080:80) sunucunun tüm adreslerinde dinler. Docker'ın belgelerine göre ufw ve firewalld kuralları bu portları filtrelemez; çünkü Docker trafiği bu kurallar devreye girmeden önce işler. Debian varsayılan olarak bir güvenlik duvarı arayüzü kurmaz; önce ufw'yi kurun:
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseArdından uygulama konteynerlerini yalnızca loopback adresinde yayınlayın ve 80 ile 443 numaralı portları bir reverse proxy'ye bırakın. Compose'da bu şöyle görünür:
services:
app:
image: nginx:stable
ports:
- "127.0.0.1:8080:80"Proxy'yi Caddy, Nginx ve Certbot veya Traefik ile kurun. Başka bir bilgisayardan nc -vz sunucu-ip-adresiniz 8080 artık bağlanamamalıdır.
Docker'ı güncelleme
Docker paketleri sistemin geri kalanıyla birlikte güncellenir:
sudo apt update
sudo apt upgrade
docker versiondocker-ce yükseltmesi servisi yeniden başlatır. unless-stopped gibi bir yeniden başlatma politikasına sahip konteynerler kendiliğinden geri gelir; politikası olmayanlar siz başlatana kadar durur. Kullanıyorsanız Debian'ın unattended-upgrades aracı varsayılan olarak Debian güvenlik güncellemelerini uygular ve Docker deposunu kapsamaz; Docker yükseltmelerini kendiniz planlayın.
Konteynerlerin içindeki uygulamaları güncellemek ayrı bir iştir: her uygulama rehberinde anlatıldığı gibi yeni imajı çekip konteyneri yeniden oluşturun.
Yedekleme ve geri yükleme
İmajları değil durumu yedekleyin (imajlar yeniden çekilebilir):
/var/lib/docker/volumes/içindeki adlandırılmış volume'lar,- konteynerlere bağladığınız ana makine dizinleri,
compose.yamlve.envdosyaları,/etc/docker/daemon.json.
Adlandırılmış bir volume'u arşivlemek için ona yazan konteynerleri durdurun ve volume'u bulunduğunuz dizine paketleyen kısa ömürlü bir konteyner çalıştırın:
docker run --rm -v app_data:/data -v "$(pwd)":/backup debian:stable-slim tar czf /backup/app_data.tar.gz -C /data .Geri yüklemek için volume'u oluşturun ve arşivi içine açın:
docker volume create app_data
docker run --rm -v app_data:/data -v "$(pwd)":/backup debian:stable-slim tar xzf /backup/app_data.tar.gz -C /dataVeritabanlarını, canlı veritabanı dosyalarını kopyalamak yerine docker exec üzerinden kendi araçlarıyla (pg_dump, mariadb-dump) dökün ve her yedeğin bir kopyasını sunucunun dışında tutun.
Docker'ı kaldırma
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extrassudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.sources /etc/apt/keyrings/docker.ascSorun giderme
sudo: command not found
Sunucu bir root parolasıyla ve sudo olmadan kurulmuş. root olarak giriş yapın, apt install sudo çalıştırın, kullanıcınızı usermod -aG sudo kullaniciadiniz ile ekleyin ve o kullanıcıyla yeniden giriş yapın.
Package 'docker-ce' has no installation candidate
apt, Docker deposunu okumuyor. cat /etc/apt/sources.list.d/docker.sources çalıştırın; Suites değerinin trixie veya bookworm olduğunu ve adresin /linux/ubuntu değil /linux/debian içerdiğini kontrol edin. Ardından sudo apt update çalıştırıp NO_PUBKEY veya 404 hatalarına bakın.
permission denied while trying to connect to the Docker daemon socket
Oturumunuz henüz docker grubuna sahip değil. id ile kontrol edin; docker yoksa Adım 4'ü tekrarlayıp yeniden giriş yapın veya bu arada sudo docker kullanın.
Güvenlik duvarı kurallarını değiştirdikten sonra konteynerlerin ağ erişimi yok
Kural setini temizlemek (nft flush ruleset veya iptables -F) Docker'ın kurallarını da siler. Kuralları yeniden oluşturmak için Docker'ı sudo systemctl restart docker ile yeniden başlatın ve tabloları temizlemek yerine kendi filtrelerinizi DOCKER-USER zincirine ekleyin.
Disk doluyor
Alanı neyin kullandığını görmek için docker system df çalıştırın. docker system prune durmuş konteynerleri, kullanılmayan ağları, sarkan imajları ve derleme önbelleğini siler; docker system prune -a hiçbir konteynerin kullanmadığı imajları da siler. Hiçbir volume'da ihtiyacınız olan veri olmadığından emin değilseniz --volumes eklemeyin ve log döndürmeyi açın (Adım 5).
Sonraki adımlar
- İlk çok konteynerli uygulamanızı Docker Compose temelleri ile yazın.
- Uygulamaları reverse proxy olarak Caddy ile HTTPS üzerinden sunun.
- Docker'ı Portainer ile web arayüzünden yönetin.
- Konteyner iş yüklerine uygun sunucuları Docker hosting sayfasında görün.
Sık sorulan sorular
Debian'ın docker.io paketi yeterli olmaz mı?
Çalışır, ancak Docker; docker.io, docker-compose, docker-doc ve podman-docker paketlerini Docker Engine ile çakışan resmi olmayan paketler olarak listeler. Docker'ın kendi docker-ce paketleri Docker sürümlerini izler ve çoğu uygulama rehberinin kullandığı Compose ve Buildx eklentileriyle gelir.
Docker hangi Debian sürümlerini destekliyor?
Docker şu anda Debian 13 (Trixie, stable) ve Debian 12 (Bookworm, oldstable) için amd64, arm64, armhf ve ppc64le paketleri yayınlıyor. Daha eski sürümler yeni Docker sürümlerini almıyor.
Bu adımları Debian tabanlı başka bir dağıtımda kullanabilir miyim?
Docker yalnızca Debian'ın kendisini belgeler. Kali Linux gibi bir türev için Docker, depo satırındaki kod adını karşılık gelen Debian sürümüyle (örneğin trixie) değiştirmenizi söyler. Diğer türevler kendi talimatlarını gerektirebilir.
Debian 13 nftables kullanıyor. Docker yine de çalışır mı?
Evet. Debian'daki iptables komutu, Docker'ın desteklediği nftables arka ucunu (iptables-nft) kullanır. Doğrudan nft komutuyla yazdığınız kuralları Docker yönetmez; konteynerler için kendi filtreleme kurallarınızı iptables ile DOCKER-USER zincirine ekleyin.
Docker'ı kurduktan sonra sunucuyu yeniden başlatmam gerekir mi?
Hayır. docker servisi paket kurulur kurulmaz başlar ve açılışta etkinleştirilir. Yalnızca kullanıcınızı docker grubuna ekledikten sonra oturumu kapatıp yeniden açmanız gerekir.