Docker ile gui uygulama çalıştırmak

Bu yazımda docker üzerine grafik tabanlı bir uygulama kurup kullanmayı anlatacağım. Bu yolla pardus depolarında güncel olmayan fakat ihtiyaç duyduğunuz uygulamaları ayrı bir dağıtım kurmaya ihtiyaç duymadan çalıştırabilirsiniz.

Bunun için öncelikle docker yüklememiz gereklidir.

apt install docker.io

Ardından root gerekmeden docker kullanabilmek için gerekli izni verelim.

usermod -aG docker <username> # Bu işlemden sonra oturumu kapatıp açmamız gerekebilir.

Ardından uygulama çalıştıracağımız imajı çekelim.

docker pull debian:testing

Öncelikle aşağıdaki komutla yerel isteklerden gelen pencerelerin tamamına izin verelim. Bu işlem docker içinden gelen pencerelere izin verir.

xhost +local:

Daha sonra container içindeki sesi dışarı aktarmamızı sağlaması için pulseaudio modülünü etkinleştirelim.

pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1

Bu iki işlem sistemi her yeniden başlattığımızda tekrar yapılmalıdır.

Şimdi docker imajımızdan container oluşturalım. Burada DISPLAY çevresel değişkenini aktarıp privileged olarak çalıştırıp tam ağ erişimi yetkisi vereceğiz. Ayrıca ev dizinlerini de birbirine bağlayacağız. Bu sayede ekran kartımızı ve ağ bağlantımızı kullanırken herhangi bir sorun oluşmayacak. ve dosyalarımızı rahatlıkla görüp düzenleyebileceğiz.

docker run -it -e DISPLAY=$DISPLAY -e PULSE_SERVER=127.0.0.1 --net host --privileged -v /home:/home --name gui_uygulama debian:testing

Burada -it etkileşimli kabuk açmak için, -e DISPLAY=$DISPLAY, çevresel değişken aktarmak için, --net host tam ağ erişimi için, --privileged donanım izolasyonunu kapatmak için (ekran kartını kullanabilmek için) -v /home:/home ortak ev dizini için, --name gui_uygulama isim vermek için kullanıldı.

Şimdi açılan terminale istediğimiz uygulamayı yükleyelim.

apt update
apt install krita

Şimdi de ortak ev dizinindeki dosyaları düzgün bir şekilde kullanabilmek içinaynı isimde bir kullanıcı açalım.
Açtığımız kullanıcının UID değeri ile kendi kullanıcımızın UID değeri aynı olmalıdır.

adduser <username>

Şimdi su komutu ile açtığımız kullanıcıya geçelim ve uygulamamızı çalıştıralım.

su user
krita

Containerdan çıktığımızda veya sistemi yeniden başlattığımızda tekrar giriş yapmak için docker ps -a çıktısında isimlendirdiğimiz imajın id değerini bulup docker start <container-id> ve ardından docker attach <container-id> şeklinde tekrar başlatabiliriz. Eğer artık ihtiyacımız kalmadıysa docker rm <container-id> komutu ile containeri silebiliriz.

Uygulamamızı uygulama menüsüne eklemek için aşağıdaki gibi bir betik hazırlayalım. ve /home/<user>/.local/bin/krita-docker komununa kaydedelim. ve çalıştırılabilir yapalım.

#!/bin/bash
xhost +local:
pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
docker start gui_uygulama
docker exec gui_uygulama su $USER -c krita $@

Ardından uygulama başlatıcımızı oluşturalım ve /home/<user>/.local/share/applications/docker-krita.desktop konumuna kaydedelim.

[Desktop Entry]
Name=Krita-docker
Comment=Docker üzerinde krita
GenericName=Krita
Exec=/home/<user>/.local/bin/krita-docker %F
Icon=krita
Terminal=false
StartupNotify=true
Type=Application
Categories=Utility;GTK;

Docker ile ilgili kullanım dokümanı için Docker kullanımı

6 Beğeni

Reklam sınıfına girmezse, uygulama depolarda yoksa veya yeterince güncel değilse

  • Flatpak paketinin olup olmadığını sorgulayabilirsiniz. Genelde daha güncel sürümleri bulunabilmektedir. Şu an flatpak depolarında 3400 kadar paket vs bulunmaktadır. Bunların 1800 kadarı uygulamadır. Steam Deck sonrası Flatpak paketlerine talep artmış görünüyor.
  • Flathub üstündeki Flatpak paketi var fakat güncel değilse sayfanın altındaki publisher bilgisinden paketin derlenme sayfasından vs issue açarak sorunu bildirebilirsiniz.
  • Sevmeseniz de snap paketi varsa snap paketini kullanabilirsiniz. Snap depolarında şu an 7000’e yakın paket bulunuyor. Bunların ne kadarı uygulama bilemiyorum.
  • Nadiren yazılımın kendi sitesinden deb paketi olarak indirme de yapılabiliyor. Varsa es geçilmemelidir.
2 Beğeni

Bu konu son yanıttan 10 gün sonra otomatik olarak kapatıldı. Yeni yanıt girilmesine izin verilmiyor.