Zobrazení logů docker kontejneru

Pro zobrazení logů docker kontejneru se používá příkaz:

docker logs [OPTIONS] container_name

Pro zobrazení nápovědy k příkazu docker logs použijte:

docker logs --help

Usage:	docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

Informix, Docker a SQuirrel

V tomto příspěvku ukáži, jak se pomocí SQuirrel připojit do Informixu běžícího v Dockeru. Informix je relační databázový systém firmy IBM. Tomu jak jej rozchodit jako docker image jsem se věnoval v předchozím příspěvku. SQuirrel je grafické rozhraní napsané v jazyce Java pro přístup k databázi (databázím). Více o instalaci se dozvíte v tomto příspěvku.

SQuirrel potřebuje pro komunikaci s databází JDBC ovladač. Ten lze stáhnou z maven repozitáře, nebo ze stránek IBM. Ovladač nahrajte do složky ../lib programu SQuirrel. Pokud nyní spustíte SQuirrel, měl by již být informix driver k dispozici.

Číst dálInformix, Docker a SQuirrel

Informix v Dockeru

V tomto příspěvku ukáži rozchození IBM relačního databázového systému Informix v Dockeru.

docker run -it --name ifx --privileged -p 9088:9088 -e LICENSE=accept ibmcom/informix-developer-database:latest

Stáhne image s informixem a vytvoří kontejner s názvem ifx.

-p 9088:9088 vystavení interního portu 9088 ven
-e LICENSE=accept pro používání informixu je třeba souhlasit s licenčními podmínkami
-i interaktivní
-t pseudo terminál

Výstup uvedeného příkazu bude zhruba následující:

Číst dálInformix v Dockeru

Redis v Dockeru

V nedávném příspěvku jsem se věnoval PostgreSQL v Dockeru. V tomto příspěvku se zaměřím na Redis v Dockeru.

Redis v Dockeru si spustíte příkazem docker run -d -p 6379:6379 --name redis1 redis.

docker run -d -p 6379:6379 --name redis1 redis
Pokud image redis nemáte na svém počítači, provedes se stažení (pull). Zároveň se redis spustí na pozadí
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
bc51dd8edc1b: Pull complete
37d80eb324ee: Pull complete
392b7748dfaf: Pull complete
48df82c3534d: Pull complete
2ec2bb0b4b0e: Pull complete
1302bce0b2cb: Pull complete
Digest: sha256:7b84b346c01e5a8d204a5bb30d4521bcc3a8535bbf90c660b8595fad248eae82
Status: Downloaded newer image for redis:latest
b44ab2740c8349b7bcfbff65f197855f6fd734ece4df71d81830bcb2eb7482a4

Tento výpis uvidíte pouze v případě, že jste zatím redis na svém počítači nikdy nespouštěli. Pokud již image redisu máte, výpis bude výrazně kratší.

Číst dálRedis v Dockeru

PostgreSQL v Dockeru

Chcete si vyzkoušet PostgreSQL, ale nechcete si jej instalovat? Řešením je použít Docker. Zde je jednoduchý postup, jak PostgreSQL v Dockeru spustit a připojit se.

docker pull postgres

Stáhne si image postgresu z úložiště (repozitory).

docker image ls

Zobrazí seznam stažených images.

docker ps

Zobrazí seznam aktuálně běžících kontejnerů.

docker run --rm --name my-postgres -e POSTGRES_PASSWORD=password -d -p 2345:5432 postgres

docker run spustí proces v novém kontejneru
-e nastaví proměnnou prostředí (v totmo případě heslo)
-p prováže veřejný port (nastaven na 2345) s portem postgresu (5432) hostPort:containerPort
-d detached mode (spustí kontejner na pozadí a zobrazí id kontejneru)
--rm automaticky odstraní kontejner pokud existuje
--name přiřadí kontejneru jméno

psql -h localhost -p 2345 -U postgres -d postgres

Připojí se k PostgreSQL databázi.

Instalace Dockeru na Linux Mint

Instalaci Dockeru na Ubuntu jsem se věnoval v jednom z předchozích příspěvků. Zdálo by se, že protože Linux Mint je založen na Ubuntu, bude instalace stejná. Podobná je, ale v jedné části se liší. Při instalaci na Ubuntu se používá příkaz

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Ten je pro Mint potřeba změnit následovně

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Je to proto, že Linux Mint používá vlastní jména verzí, která se liší od Ubuntích.

Pokud už jste sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" zadali (přídá úložště do zdrojů), odstraňte ji ze zdrojů. Pravděpodobně bude v /etc/apt/sources.list.d/additional-repositories.list. Pak již update proběhne v pořádku.

Zdroj: www.unixtutorial.org/install-docker-in-linux-mint-19-1

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/

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í

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/