Docker ile GUI Uygulamaları Çalıştırmak
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>