Istnieje możliwość uruchomienia kontenerów dockera z graficznym interfejsem, w związku z tym nie jesteś ograniczony tylko i wyłącznie do konsoli. Tak samo jak w przypadku klasycznej instalacji systemu na dysku jesteś w stanie zainstalować każde z dostępnych środowisk graficznych. Oczywiście musisz wiedzieć, że jednym z atutów korzystania z kontenerów jest ich minimalistyczność w stosunku do zainstalowanego oprogramowania. Jeżeli zainstalujesz środowisko graficzne to znaczy, że nie trzymasz się już tej zasady. Sprawdź jak stworzyć kontener Ubuntu z graficznym interfejsem.
Instalacja GUI wymaga zewnętrznego oprogramowania, oraz podstawowej konfiguracji o której przekonasz się, że jest banalnie prosta. W tym materiale chciałbym pokazać, że kontenery mogą posiadać graficzny interfejs, dlatego mogą działać prawie, że w identyczny sposób jak system zainstalowany na dysku.
Zapraszamy na darmowe szkolenie "Grafana dla początkujących".
Widzimy się 17 października o 13:00! . Zapisz się: https://asdevops.pl/s43/
Kontener Ubuntu – pobranie obrazu podstawowego
Jak mówi nam tytuł uruchomimy system Ubuntu korzystając z dockera. Niemniej jednak jeżeli chcesz nie musi być to akurat ta dystrybucja. W większości przypadków wystarczy, że podmienisz dostępny menedżer pakietów. Natomiast zawsze istnieje możliwość, że jeżeli zainstalujesz inny system możliwe że będziesz zmuszony dodatkowo coś jeszcze skonfigurować czego nie udało mi się tutaj opisać.
Teraz zajmijmy się tytułowym zagadnieniem.
Pierwsze co musimy zrobić to pobrać bazowy obraz systemu:
docker pull ubuntu
Następnie, sprawdzamy czy znajduje się na liście:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 2dc39ba059dc 2 weeks ago 77.8MB
Najnowszy obraz Ubuntu został pobrany, co potwierdza powyższy przykład. Teraz stworzymy kontener i skonfigurujemy go… ale nim to zrobimy …
Dlaczego proste rzeczy, dokładnie opisuję
Wszystko co do tej pory robiliśmy powinieneś znać, oczywiście jeżeli interesujesz się dockerem. W najbliższym czasie pozostałe czynności jakie wykonamy też nie będą różniły się od podstawowych sposobów korzystania z dockera. Pomimo wspomnianej prostoty nadal zamierzam wytłumaczyć wszystko jak działa i do czego służy. Przekonałem się, że dzięki praktyce rzeczy które z teorii są dla nas niezrozumiałe w wielu przypadkach jesteśmy w stanie pojąć wykonując to w sposób praktyczny. Dodając do tego opis, autor pomaga znacznie w tym, dlatego jeżeli jesteś zaawansowanym użytkownikiem dockera, czytając ten materiał musisz się na to przygotować. Od zawsze chcę aby to co piszę było zrozumiałe dla wszystkich niezależnie od poziomu posiadanej wiedzy, dlatego staram się opisywać wszystko dokładnie niejednokrotnie się powtarzając.
Tym sposobem odszedłem treścią od głównego wątku, ale już kończę ten krótki akapit z moim tłumaczeniem.
Uruchomienie kontenera i jego wstępna konfiguracja
Stwórzmy nasz kontener z systemem Ubuntu:
docker run -itd --name ubuntu-gui -p 5800:5900 ubuntu
Uruchamiamy kontener w interaktywnej powłoce (-i) w której możemy wydawać polecenia (-t), ale nie przechodzimy automatycznie do wspomnianej powłoki (-d) tylko uruchamiamy kontener z możliwością zalogowania. Następnie zamiast korzystać z automatycznie wygenerowanej nazwy przez dockera określamy nasz kontener po swojemu (–name) by był lepiej przez nas rozpoznawany na liście. Na końcu udostępniamy nasz system na wskazanym porcie (-p) i wybieramy obraz (ubuntu) z którego chcemy stworzyć nasz kontener.
Po stworzeniu kontenera sprawdźmy czy pojawia się na liście:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cefd869f00e3 ubuntu "bash" 3 seconds ago Up 2 seconds 0.0.0.0:5800->5900/tcp, :::5800->5900/tcp ubuntu-gui
Prezentowane polecenie w takiej formie wyświetla kontenery tylko uruchomione, dlatego mamy potwierdzenie, że wszystko jak do tej pory działa tak jak chcieliśmy.
Wejście do powłoki i instalacja niezbędnego oprogramowania
Teraz zajmiemy się jak podpowiada nagłówek po pierwsze wejściem do powłoki, a po drugie instalacją niezbędnego oprogramowania.
Powłoka kontenera
Wykonajmy pierwszą wspomnianą czynność:
docker exec -it ubuntu-gui /bin/bash
Dzięki poleceniu uruchomimy powłokę naszego systemu. Opcje -it wyjaśniłem w poprzednim paragrafie dlatego nie będę się powtarzał. Natomiast na końcu określam typ powłoki z jakiej chcę korzystać, czyli w tym wypadku bash.
Instalacja oprogramowania
Jeżeli jesteś użytkownikiem systemu Linux to wiesz, że istnieje kilka możliwych środowisk graficznych do zainstalowania. W tym materiale będę instalował środowisko graficzne XFCE 4, z którego korzystam na swoim komputerze. Przejdźmy zatem do instalacji:
apt update && apt upgrade && apt install xfce4 tightvncserver
Przeprowadzamy standardową aktualizację oraz instalację środowiska graficznego XFCE4 oraz dodatkowo instalujemy serwer VNC.
Jak to wszystko będzie działało
Otóż teraz chciałbym wyjaśnić w jaki sposób będziemy uruchamiali nasz kontener z GUI. W poprzednim kroku zainstalowaliśmy program umożliwiający zdalne połączenie (server) w tym wypadku z naszym kontenerem. Za chwilę go skonfigurujemy i na naszym systemie głównym zainstalujemy taki (klient) dzięki któremu połączymy się z nim.
Konfiguracja tightvncserver
Abyśmy mogli połączyć się z kontenerem musimy wykonać konfigurację programu tightvncserver w nim.
Pierwszą wymaganą czynnością jest ustawienie użytkownika przy pomocy zmiennej środowiskowej:
export USER=root
Następnie tworzymy hasło do połączenia zdalnego:
vncpasswd
Using password file /root/.vnc/passwd
VNC directory /root/.vnc does not exist, creating.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
Z otrzymanych informacji wynika, że zostały stworzone niezbędne pliki oraz tworzymy hasło którego użyjemy do połączenia z kontenerem. W ostatniej linii przykładu jesteśmy pytani czy chcemy utworzyć hasło umożliwiające tylko przeglądanie. W naszym przypadku nie udostępniamy kontenera na zewnątrz dlatego jak prezentuje powyższy przykład wpisałem n.
Po wykonaniu wstępnej konfiguracji pozostało udostępnić nasz kontener:
tightvncserver :0 -geometry 1366x768 -depth 24
xauth: file /root/.Xauthority does not exist
New 'X' desktop is 6f25aa6765f1:0
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/6f25aa6765f1:0.log
Teraz postaram się opisać zastosowane opcje w przykładzie:
:0 – określamy numer ekranu, (numer sesji) gdzie będzie przesłany obraz;
-geometry – określa rozdzielczość;
-depth – określa głębię kolorów;
Konfiguracja zakończyła się powodzeniem, pozostaje się zalogować.
Logowanie do kontenera
Jak już wspomniałem będziemy korzystali ze zdalnego połączenia. W kontenerze zainstalowaliśmy serwer, natomiast w naszym głównym systemie musimy zainstalować oprogramowanie dzięki któremu połączymy się ze wspomnianym serwerem. Do tego celu użyję programu Vinagre. Moim głównym systemem jest Debian dlatego instalację przeprowadzamy w poniższy sposób:
sudo apt install vinagre
Program znajduje się w menu Programy → Internet → Zdalny pulpit, o ile oczywiście korzystasz tak samo jak ja z XFCE. Po uruchomieniu pojawi się okno w którym w lewym górnym rogu klikasz na ikonę Połącz (obrazek z wtyczką) i następnie uzupełniasz tak jak na poniższym obrazku:
Następnie klikamy Połącz.
Pojawi się okno w którym musimy podać wcześniej utworzone hasło i powinniśmy otrzymać widok pulpitu tak jak na poniższym obrazku:
Podsumowanie
W bardzo szybki sposób zainstalowaliśmy, skonfigurowaliśmy i uruchomiliśmy graficzny interfejs w kontenerze gdzie znajdował się system Ubuntu. Teraz już wiesz, że pomimo iż to kontener to nie stawia nam żadnych ograniczeń, możemy w nim zainstalować graficzny interfejs i korzystać tak jak z normalnego systemu. W artykule pominąłem kilka istotnych spraw jak na przykład stworzenie własnej sieci ponieważ nie chciałem nadto go wydłużać.