Giriş
Docker, uygulamaları ve servisleri konteynerler halinde paketleyip dağıtmayı sağlayan bir platformdur. FTP (File Transfer Protocol) sunucusu, dosyaların ağ üzerinden aktarılması için yaygın bir yöntemdir. Docker üzerinde bir FTP sunucusu kurmak, sunucunun yönetimini kolaylaştırır ve taşınabilirliği artırır. Bu makalede, Docker kullanarak nasıl bir FTP sunucusu kurulacağı açıklanacaktır.
Gerekli Araçlar ve Ön Koşullar
Docker’ın kurulu olduğu bir sistem gereklidir. Docker çalışma ortamı, Linux, macOS veya Windows işletim sistemlerinde mevcut olabilir. Ayrıca bir terminal programı ve internet bağlantısı gerekmektedir. FTP sunucusu kurulumunda genellikle `vsftpd` (Very Secure FTP Daemon) kullanılır. Bu nedenle ilgili imajın Docker Hub’dan indirilmesi gerekecektir.
Docker İmajı İndirme
FTP sunucusu için Docker’da kullanılabilecek popüler bir imaj, `stilliard/pure-ftpd` imajıdır. Bu imaj, FTP sunucusu olarak kullanmak için iyi yapılandırılmış bir çözüm sunmaktadır. İmajı indirmek için terminal üzerinde aşağıdaki komut kullanılabilir:
“`
docker pull stilliard/pure-ftpd
“`
Bu komut, Docker Hub’dan belirtilen FTP sunucu imajını indirecektir.
Konteyner Oluşturma
İlk olarak, FTP sunucusunu çalıştırmak için bir konteyner oluşturulması gerekmektedir. Aşağıdaki komut kullanılarak bir konteyner başlatılabilir:
“`
docker run -d –name ftp-server -p 21:21 -e PUBLICHOST=ftp.example.com -e FTP_USER_NAME=user -e FTP_USER_PASS=password -e FTP_USER_HOME=/home/user stilliard/pure-ftpd
“`
Bu komutta yer alan seçenekler şu şekilde açıklanabilir:
– `-d`: Konteyneri arka planda çalıştırma seçeneğidir.
– `–name ftp-server`: Konteynere bir isim atar.
– `-p 21:21`: Host üzerindeki 21 numaralı portu konteynerin 21 numaralı portuna yönlendirir.
– `-e PUBLICHOST=ftp.example.com`: FTP sunucusunun erişim adresidir.
– `-e FTP_USER_NAME=user`: Oluşturulacak FTP kullanıcısının adıdır.
– `-e FTP_USER_PASS=password`: FTP kullanıcısının şifresidir.
– `-e FTP_USER_HOME=/home/user`: Kullanıcının ana dizinidir.
FTP Sunucusuna Erişim
FTP sunucusu çalışmaya başladıktan sonra, bir FTP istemcisi (örneğin, FileZilla) kullanılarak sunucuya erişilebilir. Bağlantı ayarları aşağıdaki gibi olmalıdır:
– Host: ftp.example.com (ya da yerel IP adresi)
– Port: 21
– Kullanıcı Adı: user (önceden belirlenen kullanıcı adı)
– Şifre: password (önceden belirlenen şifre)
Bağlantı sağlandığında, kullanıcı belirtilen ana dizine erişebilir.
Veri Aktarımı için Pasif Mod Ayarları
FTP sunucusunun genel ayarlarında pasif modun etkinleştirilmesi gerekebilir. Pasif mod, NAT (Network Address Translation) arkasında bulunan istemcilerin FTP sunucusuna bağlanmasını kolaylaştırır. `stilliard/pure-ftpd` imajı için pasif mod yapılandırması şu şekilde yapılabilir:
“`
docker run -d –name ftp-server -p 21:21 -p 30000-30010:30000-30010 -e PUBLICHOST=ftp.example.com -e FTP_USER_NAME=user -e FTP_USER_PASS=password -e FTP_USER_HOME=/home/user -e FTP_PASSIVE_PORTS=30000-30010 stilliard/pure-ftpd
“`
Burada `-p 30000-30010:30000-30010` parametresi, pasif mod için kullanılacak bağlantı noktalarını tanımlar.
Veritabanı ile Kullanıcı Yönetimi
FTP kullanıcılarının yönetimi için bir veritabanı da oluşturulabilir. Bu işlem için konteynerin yapılandırması değiştirilebilir. Kullanıcıların veritabanı üzerinden yönetilmesi, daha fazla güvenlik ve ölçeklenebilirlik sağlar. Veritabanı erişimi için gerekli ayarların sağlanması gerekir.
Konteynerin Yönetimi
Oluşturulan FTP sunucusu konteynerinin durumunu kontrol etmek için aşağıdaki komut kullanılabilir:
“`
docker ps
“`
Bu komut активно çalışan konteynerleri listeleyecek ve FTP sunucusu konteynerinin adı burada görünecektir. Konteyner durdurulmak istenirse aşağıdaki komut ile bunu gerçekleştirmek mümkündür:
“`
docker stop ftp-server
“`
Konteyner tamamen silinmek istenirse aşağıdaki komut kullanılabilir:
“`
docker rm ftp-server
“`
Sonuç
Docker üzerinden bir FTP sunucusu kurmak, konteynerleşmenin sunduğu avantajları kullanarak, kurulum ve yönetimi basit bir hale getirir. İhtiyaçlara göre özelleştirilebilen yapılandırmalarla, güvenli bir dosya transferi ortamı sağlamak mümkündür. Bu tür bir kurulum, sunucu kaynaklarının daha verimli kullanılmasına ve daha fazla esneklik sağlanmasına yardımcı olur.