Docker, sunucu tarafı ve komut satırı uygulamaları için yaygın olarak kullanılır. Bununla birlikte, doğru kurulumla, GUI tabanlı uygulamaları konteynerlerin içinde de çalıştırabilirsiniz. Konteynerler, uygulamaların güvenli ve yalıtılmış bir ortamda çalışmasını sağlayan GUI kitaplıklarını ve görüntüleme araçlarını içerebilir. Bu yaklaşım, GUI uygulamalarının farklı makineler veya işletim sistemi ortamlarında geliştirilmesini, test edilmesini ve dağıtılmasını basitleştirir. Bu kılavuz, GUI uygulamalarını Docker konteynerleri içinde minimum kurulumla nasıl çalıştıracağınız konusunda size yol gösterecektir.
Docker ve Docker GUI Konteynerlerini Anlama
Docker, bir uygulamayı kod, kitaplıklar ve ayarlar gibi ihtiyaç duyduğu her şeyle birlikte konteyner adı verilen bağımsız bir birimde paketlemenize olanak tanır. Bu konteynerler, ana bilgisayar sisteminin çekirdeğini paylaşarak onları tam sanal makinelere kıyasla hafif, hızlı başlatılmış ve verimli hale getirir.
GUI konteynerleri, Firefox, Gedit veya diğer masaüstü araçları gibi grafik uygulamaları içeren ve pencerelerinin gerçek ekranınızda görünmesine izin veren Docker kurulumlarıdır. Standart konteynelerin aksine, bunlar ana bilgisayarın görüntüleme sistemine bağlanmak için ek yapılandırma gerektirir, bu da uygun işleme ve GUI öğeleriyle etkileşim sağlar.
GUI Uygulamalarını Neden Docker’da Çalıştırmalısınız?
Docker’da GUI uygulamalarını çalıştırmanın faydalı olmasının temel nedenleri şunlardır:
- Docker’da bir GUI uygulaması çalıştırdığınızda, kütüphaneler ve ayarlar gibi ihtiyaç duyduğu her şey konteynerin içine paketlenir. Bu, ana sisteminizi karmaşadan veya çakışmalardan uzak tutar.
- Docker kullanmak, uygulamanızın her makinede aynı şekilde çalışacağı anlamına gelir. İster geliştiriyor, ister test ediyor veya başkalarıyla paylaşıyor olun, ortam tutarlı kalır.
- Konteynerler yeni bir uygulamayı test etmeyi veya bir şeyi hata ayıklamayı kolaylaştırır. Ana makinenizi etkilemeden bunları çalıştırabilir, duraklatabilir veya kaldırabilirsiniz.
- Docker, Linux GUI uygulamalarını Linux olmayan sistemlerde çalıştırmanıza olanak tanır. Bunu XQuartz veya VcXsrv gibi ekran paylaşım araçlarını kullanarak yapar, bu nedenle sanal makineye gerek yoktur.
- Geleneksel VM’lerin aksine, Docker kapsayıcıları daha az sistem kaynağı kullanır. GUI tabanlı uygulamalar için bile daha hızlı başlar ve daha sorunsuz çalışırlar.
Docker’da GUI Uygulamalarını Çalıştırma
Docker’ı Ubuntu’ya yükleyin
Resmi Docker projesinin halka açık anahtarının anahtar parmak izini kontrol ederek başlayın:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --show-keys --with-fingerprintŞu anda, Docker projesinin imza anahtarının parmak izi: 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88. .

Bununla birlikte, bu anahtar gelecekte değişebilir. Eşleşip eşleşmediklerini görmek için Docker’ın resmi web sitesini kontrol edin. Yüklediğiniz yazılımın meşru olmasını sağlamak için bunu çapraz referanslamak önemlidir.
İmza anahtarının geçerliliğini onayladıktan sonra, “/etc/apt/keyings” klasörünüze indirin ve kaydedin:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgİlahinin izin parçalarının doğru olduğundan emin olun:
sudo chmod a+r /etc/apt/keyrings/docker.gpgDocker projesi için yeni bir depo dosyası oluşturun:
sudo nano /etc/apt/sources.list.d/docker.listAşağıdaki kod satırını yeni depo dosyanızın içine yapıştırın:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stableYeni depo dosyanızı kaydedin, ardından sisteminizin paket depolarını güncelleyin:
sudo apt update && sudo apt upgradeDocker Compose eklentisi ile birlikte çekirdek Docker paketlerini yükleyin. Bunlar, Docker uygulamalarını dağıtmanıza ve düzgün bir şekilde düzenlemenize izin verecektir:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-pluginsudo. . Şifrenizi her seferinde yazmak zorunda kalmaktan kaçınmak istiyorsanız, kullanıcı hesabınızı “docker” grubuna ekleyin:
sudo adduser YOUR-CURRENT-USERNAME dockerGrafiksel kullanıcı arayüzünden çıkış yapın ve tekrar giriş yapın. Şimdi gibi komutları kullanabilirsiniz docker psyerine sudo docker ps. .
İpucu: Su üreticileri dosyasını değiştirerek şifre doğrulamasını sudoda da devre dışı bırakabilirsiniz.
docker --version
Eğer bu komut bir versiyon numarası döndürüyorsa Docker kurulmuş ve çalışıyor demektir.
Docker düzgün bir şekilde kurulduktan sonra bir sonraki adımlara geçebilirsiniz.
Docker Hizmetini Etkinleştirme
Şimdi aşağıdaki komutu kullanarak Docker servisini başlatın:
sudo systemctl start dockerDocker hizmetinin düzgün çalışıp çalışmadığını kontrol etmek için şunu çalıştırın:
sudo systemctl status dockerÇıktı, Docker hizmetinin etkin olduğunu ve herhangi bir sorun olmadan çalıştığını doğruluyor:

Proje Klasörünü ve Dockerfile’ı Ayarlayın
GUI uygulamalarını çalıştırmak için tüm Docker ile ilgili dosyaları depolayacağımız “dockerGUI” adında bir dizin oluşturalım:
mkdir dockerGUIŞimdi, daha sonra oluşturacağımız veya değiştireceğimiz tüm dosyaların dockerGUI klasöründe saklanacağından emin olmak için bu dizine gidin:
cd dockerGUIDocker imaj yapılandırmasını tanımlamak için dockerGUIFile adında yeni bir dosya oluşturun:
nano dockerGUIFileŞimdi dockerGUIFile’a aşağıdaki kod satırlarını yapıştırın:
FROM jess/firefox
ENV DISPLAY=:0
CMD ["firefox"]Yukarıdaki kod, Docker’a Firefox’un önceden oluşturulmuş bir görüntüsünü kullanmasını söyler ve GUI’nin ana sistemde görünebilmesi için görüntüleme ortamını ayarlar. Dahası, konteyner çalıştığında Firefox’un otomatik olarak başlatılmasını sağlar.
Not: Farklı bir uygulama denemek için, Dockerfile’ınızdaki görüntüyü ve komutu değiştirmeniz yeterlidir. Örneğin, Gedit’i çalıştırmak için resmi Ubuntu görüntüsünü kullanabilir ve uygulamayı derleme sırasında şu şekilde yükleyebilirsiniz:
FROM ubuntu
RUN apt-get update && apt-get install -y gedit
ENV DISPLAY=:0
CMD ["gedit"]Docker Görüntüsünü Oluşturun
Artık Docker yapılandırması dockerGUIFile’da ayarlandığına göre, aşağıdaki komutu kullanarak Docker imajını oluşturalım:
sudo docker build -t myfirefox:1 -f dockerGUIFile .Bu komut, dockerGUIFile’dan bir Docker görüntüsü oluşturur, buna 1 etiketiyle myfirefox adını verir ve bağlam olarak geçerli dizini kullanır:

GUI Desteği Etkinleştirilmiş Docker Konteynerini Başlatın
Şimdi, aşağıdaki komutu çalıştırarak Docker konteynerleri için GUI desteğini etkinleştirin:
xhost +local:dockerÇıktı, sistemimde çalışan yerel istemcilerin (Docker konteynerları gibi) artık X sunucuma bağlanmasına izin verildiğini doğruluyor:

Şimdi, Firefox’u ana sisteminizde GUI desteğiyle başlatmak için aşağıdaki komutu kullanarak konteyneri çalıştırın:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix myfirefox:1Sonuç olarak bu komut, konteyneri ekranınıza bağlar ve Firefox’un ekranınızda tıpkı yerel bir uygulama gibi açılmasını sağlar:

Not: –rm seçeneğini kullanmak, Docker’ın uygulama kapandıktan sonra konteyneri otomatik olarak silmesini sağlar, böylece sisteminiz temiz kalır ve docker ps -s komutunda konteynerin görüntülenmesi engellenir.
Docker’ı X Server’dan ayırın
GUI uygulamasını kullanmayı bitirdiğinizde, güvenlik nedeniyle X sunucusuna erişimi kapatmanız önerilir:
xhost -local:docker
Son Düşünceler
Docker’da GUI tabanlı uygulamaları çalıştırmak, konteynerlerin komut satırının ötesine geçebilmelerini sağlamanın harika bir yoludur. Doğru kurulumla, masaüstü uygulamalarını sanki sisteminize yüklenmiş gibi bir konteynerden başlatabilirsiniz. Temiz bir ortamda Linux araçlarını test etmek, geliştirmek veya keşfetmek için basit ama güçlü bir yaklaşımdır. Kendi GUI’ye hazır konteynerlerinizi oluşturmaya başlayın ve Docker’ın Linux masaüstünüzde sunduğu tüm avantajlardan yararlanın.
Yazının orijinalin buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.