DevOpsSon Güncelleme:

VDS Üzerinde Docker ve Portainer Kurulumu (Ubuntu 24.04)

Hazır mısınız?

VDS Sunucu hizmetimizi hemen keşfedin.

VDS Paketlerini İncele

Docker İçin Neden KVM Tabanlı VDS?

Docker, Linux çekirdeğinin namespace ve cgroup özelliklerine ihtiyaç duyar. OpenVZ veya LXC gibi çekirdeği paylaşan sanallaştırmalarda bu özellikler kısıtlı olabilir. KVM tabanlı bir VDS'te ise kendi çekirdeğinize sahip olduğunuz için Docker, overlay ağları ve VPN arayüzleri sınırlama olmadan çalışır.

İnoxweb VDS panelinde hazır Docker şablonu bulunur; sunucuyu bu şablonla kurarak aşağıdaki kurulum adımlarını atlayabilirsiniz.

Docker Engine Kurulumu (Resmi Depo)

Dağıtımın kendi deposundaki sürümler genellikle eskidir. Docker'ın resmi APT deposunu ekleyerek güncel sürümü kurun:

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

hello-world konteyneri mesajını görüyorsanız kurulum tamamdır. Komutları sudo olmadan çalıştırmak için kullanıcınızı docker grubuna ekleyebilirsiniz; bu grubun root'a eşdeğer yetki verdiğini unutmayın.

Portainer CE ile Web Arayüzünden Yönetim

Portainer, konteynerleri, imajları ve Compose yığınlarını tarayıcıdan yönetmenizi sağlar:

sudo docker volume create portainer_data
sudo docker run -d -p 9443:9443 --name portainer --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

Ardından https://SUNUCU_IP_ADRESI:9443 adresini açıp yönetici hesabını oluşturun. Güvenlik nedeniyle Portainer ilk kurulumda yönetici hesabının birkaç dakika içinde oluşturulmasını bekler; süre dolarsa konteyneri yeniden başlatmanız yeterlidir.

Docker Compose ile İlk Servisinizi Yayınlayın

Örnek olarak bir durum izleme aracı olan Uptime Kuma'yı yalnızca sunucunun kendisinden erişilebilecek şekilde başlatalım:

# ~/uptime-kuma/compose.yaml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
cd ~/uptime-kuma && sudo docker compose up -d

Servisi dışarıya açmak için önüne Nginx, Caddy veya Traefik gibi bir ters vekil (reverse proxy) koyup Let's Encrypt ile ücretsiz SSL alabilirsiniz.

Önemli: Docker Portları UFW'yi Atlayabilir

Docker, -p 8080:80 gibi yayınlanan portlar için kendi iptables kurallarını ekler. Bu kurallar UFW'den önce işlendiği için, UFW'de kapalı görünen bir port internetten erişilebilir kalabilir.

  • Yalnızca sunucu içinden erişilecek servisleri 127.0.0.1:PORT:PORT biçiminde yayınlayın
  • Dışarıya açık servisleri tek bir ters vekil üzerinden 80/443 portlarına toplayın
  • Gelişmiş kısıtlamalar için iptables DOCKER-USER zincirine kural ekleyin

Sunucu tarafındaki diğer güvenlik adımları için SSH, UFW ve Fail2ban rehberimize göz atın.

Kaynak Planlaması

Docker Engine'in kendisi birkaç yüz MB bellek kullanır; asıl tüketim konteynerlerinizden gelir. Birkaç hafif servis için 2 GB RAM yeterlidir, veritabanı ve birden fazla uygulama çalıştıracaksanız 4-8 GB RAM'li bir sanal sunucu paketi daha rahat bir başlangıç sağlar.

Sıkça Sorulan Sorular

Docker kurulumu için en az kaç GB RAM gerekir?

Docker Engine 1 GB RAM ile de çalışır, ancak pratikte 2 GB RAM ile başlamak önerilir. Veritabanı içeren birden fazla konteyner için 4 GB ve üzeri daha uygundur.

UFW açık olduğu halde Docker portum neden internetten erişilebilir?

Docker yayınlanan portlar için iptables kurallarını UFW'den önce ekler. Servisi 127.0.0.1 adresine bağlayarak veya DOCKER-USER zincirine kural ekleyerek bu erişimi kısıtlayabilirsiniz.

İlgili İçerikler