GUI alkalmazás futtatása docker-ből

Posted by | | Szoftverfejlesztés | Nincs hozzászólás a(z) GUI alkalmazás futtatása docker-ből bejegyzéshez

Néha előfordul, hogy ki szeretnénk próbálni egy új alkalmazást, vagy egy új nyelven szeretnénk kicsit programozni, de nem szeretnénk “összepiszkolni” rendszerünket. A docker segítségünkre lehet.

Az alábbiakban bemutatnám, hogyan tudunk olyan docker container-t létrehoznunk, amelyben gui-s alkalmazásokat tudunk futtatni.

Elsőként töltsük le az ubuntu image-et:

docker pull ubuntu
docker create ubuntu:16.04

Az ubuntu image-re alapozva készítünk egy saját docker image-et, amelyben tudunk futtatni gui alkalmazásokat. Elsőként hozzuk létre egy docker-gui könyvtárat és abban az alábbi tartalommal rendelkező Dockerfile-t:

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y sudo xorg

# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
    mkdir -p /home/developer && \
    echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
    echo "developer:x:${uid}:" >> /etc/group && \
    mkdir -p /etc/sudoers.d && \
    echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
    chmod 0440 /etc/sudoers.d/developer && \
    chown ${uid}:${gid} -R /home/developer

USER developer
ENV HOME /home/developer

 

A Dockerfile leírja, hogy az ubuntu:16.04-es image-et felhasználva szeretnénk saját image-ünket elkészíteni. Ezt követően két részre bontható az image készítés. Az első, hogy gondoskodunk arról, hogy meglegyenek a szükséges lib-ek a gui alkalmazások futtatására (xorg csomag telepítéséve), a második, hogy létrehozunk egy developer nevű felhasználót, aki pont olyan jogosultságokkal fog rendelkezni, mint a host felhasználónk (ez azért jó, mert ha becsatolunk a docker-be egy könyvtárat, akkor azon belül levő fájlokat/könyvtárakat úgy kezelheti a developer felhasználó, mint a host felhasználónk). Fontos, hogy a Dockerfile-ban átírjuk a uid és gid értékeket a host felhasználónk esetében valid értékekre.

 

Az alábbi parancsot futtatva létrehozzuk az image-ünket:

docker build -t <image neve> .

 

Majd indítsuk egy containert:

docker run -i -t -d -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name <container neve> <image neve> /bin/bash

 

A háttérben indított container-be a következőképp tudunk belépni:

docker exec -i -t <container neve> /bin/bash

 

Most már csak fel kell telepítenünk a container-ben a kívánt gui-s alkalmazásunkat és indíthatjuk is.

Share on FacebookShare on Google+Email this to someoneTweet about this on TwitterShare on RedditShare on LinkedIn

No Comments

Leave a comment