Začínáme s Dockerem – Seznamování se

V předchozích dvou příspěvcích věnovaných dockeru jsme docker nainstalovali, přidali uživatele do skupiny docker a zkusmo spustili kontejner z image hello-world. V tomto příspěvku se s dockerem seznámíme podrobněji.

Spuštění nového kontejneru pomocí docker run je možné parametrizovat. Volba -i znamená interactive a způsobí, že kontejner zůstane aktivní. Bash na konci znamená, že se spustí bash.

vitfo@vitfo-VirtualBox:~$ docker run -i debian bash
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
723254a2c089: Pull complete 
Digest: sha256:0a5fcee6f52d5170f557ee2447d7a10a5bdcf715dd7f0250be0b678c556a501b
Status: Downloaded newer image for debian:latest

Nyní můžeme spuštěnému bash zadávat příkazy (např. ls, pwd a exit jako v následujícím příkladu). Image debian jsme u sebe neměli, takže se stáhl z veřejného docker repozitáře. Při dalším spuštění se již stahovat nebude.

Číst dálZačínáme s Dockerem – Seznamování se

Začínáme s Dockerem – Přidání uživatele do skupiny docker

Docker můžeme po instalaci spouštět pouze jako root uživatel (sudo). Pokud chcete docker spouštět pod svým uživatelem, je třeba přidat uživatele do skupiny docker.

vitfo@vitfo-VirtualBox:~$ sudo groupadd docker
groupadd: group 'docker' already exists

Je vidět, že docker už skupinu vytvořil.

vitfo@vitfo-VirtualBox:~$ sudo usermod -aG docker $USER

Přesvědčíme se, že uživatel je přidán do skupiny

vitfo@vitfo-VirtualBox:/etc$ cat /etc/group | grep docker
docker:x:998:vitfo

Nyní zkusíme vytvořit kontejner z image hello-world bez zadání sudo.

vitfo@vitfo-VirtualBox:~$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

Dostáváme chybu, že nemáme oprávnění. Nepomohlo ani vypnutí a zapnutí terminálu. Vyřešil to až restart počítače.

vitfo@vitfo-VirtualBox:~$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

Pokud jste si docker zkoušeli se sudo, může se vám stát, že budete dostávat chyby. Je nutné změnit vlastnictví souborů a adresářů, které docker používá.

Zdroj: docs.docker.com/…/linux-postinstall/

Co znamená /dev/null v Linuxu

Adresář /dev je místo pro umístění speciálních souborů. V Linuxu je vše adresář nebo soubor a v tomto adresáři naleznete soubory zařízení. null je zařízení, které převezme vstup a vyhodí ho. Používá se k potlačení výstupu.

cat soubor 1> out

Přesměruje standardní výpis (v tomto případě obsah souboru) do souboru s názvem out.  Stejný výsledek by dal zápis cat soubor > out. Při zápisu cat soubor >> out by došlo k připojení

cat neexistujici_soubor 2> err

Přesměruje chybový výpis (soubor neexistuje) do souboru s názvem err.

cat &> all

Přesměruje standardní i chybový výstup do souboru s názvem all.

cat &>/dev/null

Přesměruje standardní i chybový výstup na zařízení null. Nic nebude vypsáno.

Zdroj: askubuntu.com/…/what-does-2-dev-null-mean

Začínáme s Dockerem – Instalace a první spuštění

Docker je open-source projekt, který umožňuje izolovat aplikace do kontejnerů. Kontejnery sdílejí jádro operačního systému. Spuštění kontejneru pro operační systém znamená spuštění procesu, nikoliv kompletní virtualizace operačního systému. Tím pádem je spuštění kontejneru(ů) méně náročné na zdroje a je jich možno spustit více než virtuálních strojů.

Instalace pro Ubuntu je dobře popsána na stránkách dockeru (viz. zde). Zde ji ukážu krok za krokem.

vitfo@vitfo-VirtualBox:~$ sudo apt-get update 
[sudo] password for vitfo: 
Hit:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:2 http://cz.archive.ubuntu.com/ubuntu xenial InRelease
Hit:3 http://cz.archive.ubuntu.com/ubuntu xenial-updates InRelease      
Hit:4 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease 
Hit:5 http://cz.archive.ubuntu.com/ubuntu xenial-backports InRelease    
Reading package lists... Done                     

Číst dálZačínáme s Dockerem – Instalace a první spuštění

Idea IDE zkratky v Ubuntu

Některé klávesové zkratky Idea IDE v Ubuntu nefungují. Je to z toho důvodu, že jsou přiřazeny v Ubuntu něčemu jinému. Jako příklad poslouží Ctrl+Alt+šipka_doleva nebo Ctrl+Alt+šipka_doprava. V Idea IDE přesune (šipka doleva) na předchozí umístění kurzoru nebo (šipka doprava) následující umístění kurzoru. V Ubuntu jsou tyto zkratky přiřazeny „Switch to workspace left“ a „Switch to workspace right“. Pokud v Ubuntu tyto zkratky nebudou použity, budou fungovat v Idea IDE.

Zde jsem Switch to workspace přiřadil klávesovým zkratkám Ctrl+Alt+1/2 a zkratka Ctrl+Alt+šipka<-> v Idea IDE funguje.

idea-ide-a-ubuntu-prirazeni-klavesovych-zkratek

Stejná situace platí také např. pro zkratku Ctrl+Alt+L, která má v Idea IDE zformátovat kód, ale v Ubuntu provede zamčení obrazovky.

Ubuntu Unity: Změna velikosti nastavení ikon Launcheru

Lancher nebo-li panel pro rychlé spuštění programů má řadu nastavení. V tomto příspěvku ukážu, jak měnit velikost ikon zobrazovaných v tomto panelu. K nastavení se dostaneme přes Nastavení systému (ikona v panelu s ozubeným kolečkem) -> Vzhled -> a v záložce Vzhled dole je posuvník Velikost ikon Launcheru. S velikostí je třeba trochu experimentovat, než najdete tu, která vám bude nejvíce vyhovovat.

ubuntu-nastaveni-velikosti-ikon-v-launcheru

Nastavení klávesových zkratek v Ubuntu

Klávesové zkratky v Ubuntu lze nastavit v: Nastavení systému (ikona s ozubeným kolem v Launcheru – lišta s programy k rychlému spuštění) -> Klávesnice -> Zkratky. Některé činnosti nemají přiřazenu žádnou klávesovou zkratku a jsou označeny jako „Vypnuto“. Některé aktivity (činnosti) jsou přeložené, ale některé mají anglický název. Pokud např. budeme chtít přiřadit klávesovou zkratku zobrazení plochy (zmenšení všech otevřených oken), najdeme si danou aktivitu v záložce Rozcestník, kde najdeme „Hide all normal windows“. V operačním systému Windows má tato činnost přiřazenou klávesovou zkratku klávesa Windows + D. Stejnou použiji i v Ubuntu. Klikněte na „Hide all normal windows“ a stiskněte požadovanou kombinaci kláves. To je vše. Klávesová zkratka je nastavena.

ubuntu-nastaveni-klavesovych-zkratek

Nastavení velikosti teminálového okna v Ubuntu

Pokud otevíráte terminál v Ubuntu, otevře se ve standardní velikosti 80 sloupců 24 řádků. To není moc a pokud s terminálem pracujete, často si jej musíte zvětšit. Výchozí velikosti s můžete změnit takto. Otevřete si terminál a zvětšete jej na maximum (jinak se vám v horní liště nezobrazí volby) -> Upravit -> Předvolby profilu -> nastavit velikost tak, jak vám vyhovuje.

ubuntu-nastaveni-velikosti-terminalu

ubuntu-nastaveni-velikosti-terminalu_2

Generování názvů kontejnerů v Dockeru

Když vytvoříte nový kontejner v dockeru pomocí docker run a nezadáte parametr --name, docker vytvoří kontejner a pojmenuje ho podle sebe. Vznikají tak zajímavé názvy jako: dazzling_swanson, loving_shockley, wonderful_curran či suspicious_knuth. Jedná se o jména vědců + přídavné jméno. Například Shockley se odkazuje na William Shockley co-invented the transistor – https://en.wikipedia.org/wiki/William_Shockley, Curran na Samuel Curran was an Irish physicist who worked alongside his wife during WWII and invented the proximity fuse čí Knuth na Donald Knuth – American computer scientist, author of „The Art of Computer Programming“ and creator of the TeX typesetting system. https://en.wikipedia.org/wiki/Donald_Knuth.

Nikdy ale kontejner nebude pojmenován boring_wozniak. Proč? Protože Steve Wozniak is not boring:

if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
	goto begin
}

Zde je celý kód metody generující názvy:

func GetRandomName(retry int) string {
begin:
	name := fmt.Sprintf("%s_%s", left[rand.Intn(len(left))], right[rand.Intn(len(right))])
	if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
		goto begin
	}

	if retry > 0 {
		name = fmt.Sprintf("%s%d", name, rand.Intn(10))
	}
	return name
}

Zdroj: frightanic.com/…-default-container-names/