MySQL v Dockeru

Chcete si vyzkoušel MySQL, ale nechcete ji instalovat do počítače. Použijte docker. Zde je příklad pro použití docker-compose.

docker-compose.yml

version: "3"

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - 3306:3306
    
volumes:
  db_data:

Následně stačí zadat příkaz docker-compose up.

Číst dálMySQL v Dockeru

Root oprávnění v docker kontejneru

Docker nabízí příkaz exec, který spustí zadaný příkaz v běžícím kontejneru. Pokud tedy máme kontejner s názvem postgres, který obsahuje PostgreSQL databázi, pak příkazem docker exec -it postgres psql -U postgres spustíme v kontejneru postgres příkaz psql s paramatrem -U (uživatelské jméno) postgres. Tím se přihlásíme k databázi běžící v kontejneru.

Někdy můžeme chtít v kontejneru vykonávat nějakou činnost (např. vytvářet složky), k čemuž ale občas potřebujeme root oprávnění. Takto se vytvoříme složku realms v kontejneru s názvem keycloak. Do kontejneru se přihlásíme jako root: docker exec -u 0 keycloak bash -c "mkdir realms"

Spuštění bashe v docker kontejneru

Docker nabízí příkaz exec, který spustí zadaný příkaz v běžícím kontejneru. V tomto příspěvku jsem si vytvořil kontejner s databází PostgreSQL a k databázi jsem se připojil z lokálního počítače pomocí nástroje psql. Pokud chci v tomto kontejneru spustit bash v pseudoterminálu, použiji tento příkaz:

docker exec -it my-postgres bash

-i, --interactive: interaktivní vstup
-t, --tty: spustí pseudo terminál

Zdroj: stackoverflow.com/…/how-do-i-get-into-a-docker-containers-shell

Redisson master slave config

Konfigurace master slave Redis klienta (Redisson) s konfigurací pro docker-compose.

redisson.json

{
  "masterSlaveServersConfig": {
    "idleConnectionTimeout": 10000,
    "connectTimeout": 10000,
    "timeout": 3000,
    "retryAttempts": 3,
    "retryInterval": 1500,
    "failedSlaveReconnectionInterval": 3000,
    "failedSlaveCheckInterval": 60000,
    "password": null,
    "subscriptionsPerConnection": 5,
    "clientName": null,
    "subscriptionConnectionMinimumIdleSize": 1,
    "subscriptionConnectionPoolSize": 50,
    "slaveConnectionMinimumIdleSize": 24,
    "slaveConnectionPoolSize": 64,
    "masterConnectionMinimumIdleSize": 24,
    "masterConnectionPoolSize": 64,
    "readMode": "SLAVE",
    "subscriptionMode": "SLAVE",
    "slaveAddresses": [
      "redis://127.0.0.1:32781",
      "redis://127.0.0.1:32782",
      "redis://127.0.0.1:32783"
    ],
    "masterAddress": "redis://127.0.0.1:32780",
    "database": 0
  },
  "threads": 16,
  "nettyThreads": 32,
  "transportMode": "NIO"
}

docker-compose.yml

version: '2'services:
  redis-master:
    image: 'bitnami/redis:latest'
    ports:
      - '6379'
    environment:
      - REDIS_REPLICATION_MODE=master
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - '/home/vitfo/Redis/volume'  redis-replica:
    image: 'bitnami/redis:latest'
    ports:
      - '6379'
    depends_on:
      - redis-master
    environment:
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-master
      - REDIS_MASTER_PORT_NUMBER=6379
      - ALLOW_EMPTY_PASSWORD=yes

docker-compose up –scale redis-master=1 –scale redis-replica=3 vytvoří:

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                     NAMES
dbb2a6f2bdae        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 11 seconds       0.0.0.0:32781->6379/tcp   redis_redis-replica_3
44adb500c854        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 10 seconds       0.0.0.0:32782->6379/tcp   redis_redis-replica_2
72e8bdc566b0        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 9 seconds        0.0.0.0:32783->6379/tcp   redis_redis-replica_1
c4b64430a2ca        bitnami/redis:latest   "/opt/bitnami/script…"   14 seconds ago      Up 12 seconds       0.0.0.0:32780->6379/tcp   redis_redis-master_1

Zdroje:

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.