Docker’da GUI Tabanlı Uygulamalar Nasıl Çalıştırılır

 

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. .

Docker CE'nin anahtar parmak izini imzaladığını vurgulayan bir terminal.

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.gpg

Docker projesi için yeni bir depo dosyası oluşturun:

sudo nano /etc/apt/sources.list.d/docker.list

Aş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 stable

Yeni depo dosyanızı kaydedin, ardından sisteminizin paket depolarını güncelleyin:

sudo apt update && sudo apt upgrade

Docker 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-plugin

sudo. . Şifrenizi her seferinde yazmak zorunda kalmaktan kaçınmak istiyorsanız, kullanıcı hesabınızı “docker” grubuna ekleyin:

sudo adduser YOUR-CURRENT-USERNAME docker

Grafiksel 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
Verify Docker Installation

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 docker

Docker 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:

Check Docker Status

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 dockerGUI

Docker 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:

Build Docker Image

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:

Allow Connections To X Server

Ş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:1

Sonuç 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:

Run Gui App From Docker

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
Remove Connections From X Server

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.

Hüseyin GÜÇ

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.