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ı