Container teknolojileri, özellikle de Docker, birçok uygulamayı build etme, taşıma ve yayına alma süreçlerini değiştirdi. Bu gelişmeler sayesinde, birbirinden izole uygulamaları birkaç saniye içerisinde hatta çoğu zaman çok daha kısa sürelerde ayağa kaldırabiliyoruz ve istediğimizde yine birkaç saniyede kapatabiliyoruz. İstersek sıfırdan bir kurulumu da yine aynı sürelerde gerçekleştirebiliyoruz. Web servisleri, veritabanı sunucu uygulamaları, API’lar gibi birçok kurulumda hayatımızı kolaylaştıran ve değiştiren Docker ile grafik arayüz(GUI) uygulamalarını hayata geçirmek istediğimizde de çok güzel çözümler karşımıza çıkıyor. Böylece web tarayıcılarından ofis uygulamalarına, sesli-görüntülü konuşma uygulamalarından e-posta istemcilerine hatta oyunlara kadar envai çeşit uygulamayı Docker ile container içerisinde çalıştırabiliyoruz. Bu yazıda, Docker ile GUI uygulamalarını nasıl çalıştırabileceğinizi göreceksiniz.

Yapıyı görürken örnek olarak Firefox’u Docker container’ı üzerinde çalıştıracağız. Bu sayede birbirinden tamamen bağımsız, birden çok Firefox’u yan yana oluşturup, farklı eklentiler kurup üzerinde denemeler yapabilir, testler çalıştırabilir, birden çok oturum açmanın zor olduğu yerlerde çoklu oturumlar açabiliriz. Yaptığımız değişiklikleri de container’ı silerek istersek tamamen sıfırlayabiliriz.

Dockerfile Oluşturulması

Dockerfile dosyasını oluşturun ve içerisine aşağıdaki içeriği ekleyin.

FROM ubuntu:19.04

RUN apt-get update && apt-get install -y firefox

RUN useradd -m -d /home/viewer -s /bin/bash viewer

USER viewer

CMD /usr/bin/firefox

Gelin bu Dockerfile‘da neler yapmışız inceleyelim.

FROM ubuntu:19.04 ile Ubuntu 19.04 Docker imajını kullanmak istediğimizi belirttik.

RUN apt-get update && apt-get install -y firefox komutu ile de öncelikle sistemdeki paket listelerini güncelleyip ardından firefox paketinin kurulumunu gerçekleştirdik. -y parametresi sayesinde herhangi bir kullanıcı etkileşimi olmadan işlemlerin onaylanarak devam etmesini sağladık.

RUN useradd -m -d /home/viewer -s /bin/bash viewer komutuyla da ev dizini /home/viewer olan, login shell’i /bin/bash olan viewer adında bir kullanıcı oluşturduk.

USER viewer komutuyla Docker konteyneri çalıştırılırken viewer kullanıcısıyla login olması direktifini verdik.

CMD /usr/bin/firefox satırıyla konteyner başlatıldığında koşturulacak komutu belirledik.

Docker İmajının Build Edilmesi

Ardından Docker imajımızı oluşturalım ve isimlendirelim:

docker build -t firefox .

Artık firefox adında bir Docker imajı elde ettik.

Buraya kadar olan kısımda Docker ile genelde yapılan adımları yaptık. Asıl önemli nokta olan DISPLAY‘in yönlendirilmesini ise konteyneri çalıştırırken yapıyoruz.

Konteyneri Ayağa Kaldıralım!

Aşağıdaki komutu kullanarak Docker üzerinde çalışacak olan Firefox uygulamasının penceresini kendi masaüstü ortamınıza aktarabilirsiniz.

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox

Bu komutta firefox olarak isimlendirdiğimiz Docker imajımızı kullanarak bir konteyneri ayağa kaldırıyor, bu sırada konteynerin DISPLAY ortam değişkenini yerel masaüstü ortam değişkenimizin değerine eşitliyor ve iki masaüstü arasında dosya paylaşımını sağlamak için /tmp/.X11-unix dizinini konteynere volume olarak ekliyoruz.

Bu komutu çalıştırdığımızda eğer her şey yolunda giderse Docker konteyneri içerisinde çalışan Firefox’un penceresini aşağıdaki ekran görüntüsünde olduğu gibi kendi masaüstü ortamımızdan kontrol edebiliyor olacağız.

</figure>

Dikkat ederseniz uygulamanın pencere başlığında, parantez içerisinde on cb6... ile başlayan bir ifade var, burada da bu uygulamanın çalıştığı konteynerin numarası yazmaktadır.

Sonraki yazılarda, benzer/farklı birçok uygulamanın Docker ile yayına alınması hakkında örnekler de yapacağız. Eğer Docker ile ilgileniyorsanız blogumuzun <a href="https://blog.peptr.net/category/docker/" class="rank-math-link">Docker</a> kategorisinde ilginizi çekecek birçok içerik bulabilirsiniz.

Örneğin, bu yazıda anlatılanları denedikten sonra oluşan konteyneri silerek disk alanınızdan kazanmak istiyorsanız aşağıdaki yazı tam size göre!

</figure>