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

Změna portu Redisu

Konfigurační soubor Redisu redis.conf lze na Linuxu najít ve složce /etc/redis. V tomto souboru je definován také port, na kterém Redis běží:

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

Ve výchozím nastavení se používá port 6379. Pokud port změníte, je třeba restartovat redis server.

sudo service redis-server restart

Připojení můžete vyzkoušet pomocí redis-cli.

redis-cli ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused

Pokud východí port 6379 změníte, musíte redis-cli říct, na který port se má připojit (přepínač -p). V tomto případě jsem port změnil na 6378.

redis-cli -p 6378 ping
PONG

VPN v Mintu

Linux Mint obsahuje open-source OpenVPN. Pokud byste jej nainstalovaný neměli, instalace probíhá klasicky

sudo apt-get install openvpn

Nejjednodušší zprovoznění VPN je, pokud máte (někdo vám pošle) konfigurační soubor (přípona .ovpn). Pak stačí zadat

openvpn --config soubor.ovpn

a jste připojeni. Ukázkový .ovpn soubor naleznete zde. Další užitečné příkazy

openvpn --version
openvpn --help

 

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.

Spojení výsledků více SQL dotazů do jednoho sloupce

SQL umožňuje spojit výsledky více SQL dotazů do jediného sloupce. Nejdříve si vytvoříme tabulky a naplníme je daty.

drop table if exists t_tree;
create table t_tree (id bigint, text text);
insert into t_tree (id, text) values
(1, 'javor'),
(2, 'dub'),
(3, 'borovice');

drop table if exists t_car;
create table t_car (id bigint, text text);
insert into t_car (id, text) values
(1, 'škoda'),
(2, 'nisan'),
(3, 'ford');

drop table if exists t_sport;
create table t_sport (id bigint, text text);
insert into t_sport (id, text) values
(1, 'hokej'),
(2, 'judo'),
(3, 'biatlon');

Spojení výsledků ze tří tabulek:

Číst dálSpojení výsledků více SQL dotazů do jednoho sloupce

Instalace pgAdmin4 na Linux Mint

PgAdmin 4 je populární Open Source administrativní nástroj pro PostgreSQL. Jeho instalace na Linux Mint, má ale určitá úskalí. Pokud používáte Linux Ubuntu, stačí vám apt install. Pro Linux Mint, musíte nejdříve přidat klíč pro balíčky postgresu

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

a do Software Sources přidejte záznam,

Číst dálInstalace pgAdmin4 na Linux Mint

Verze Linux Mint vs Ubuntu

Jak Mint tak Ubuntu jsou populární linuxové distribuce. Ubuntu vychází z Debianu a základem pro Mint je Ubuntu LTS (Long Time Support). Více o Ubuntu LTS naleznete v tomto příspěvku. Zde je aktuální kalendář vydávání verzí Ubuntu:

Linux Mint tedy závisí na Ubuntu. To, jaká je závislost mezi těmito distribucemi je k nalezení na stránkách Mintu.

Pokud chcete zjistit, jakou aktuální verzi Mintu používáte, podívejte se na tento příspěvek.

Velitelství kybernetických a informačních operací

Česká armáda buduje Velitelství kybernetických a informačních operací, které by mělo mít čtyři prvky: CIRC, kybernetickou obranu, informační operace a podporu. Nové velitelství už má přes půl roku i svůj profil na Facebooku. Zatím tam jsou dva příspěvky. Mě zaujal ten první, známý každému, kdo zkoušel programovat: Hello world! Jen doufám, že kvalita prezentace na sociální síti nemá nic společného s kvalitou činnosti velitelství.

Co je to socket

Pokud jste četli něco o internetu, nebo o linuxu, pravděpodobně jste narazili na slovo socket. Víte ale co tento termín znamená?

TCP socket je koncový bod (endpoint) spojení. Je definován IP adresou a portem. Port je identifikátor konkrétní služby (programu). Cílem portu je rozlišit mezi více koncovými body na stejné IP adrese. Ve stejný čas může existovat pouze jeden socket pro IP a port, ale může existovat více spojení. TCP spojení je definováno dvěma koncovými body (endpointy, sockety)

It is the socket pair (the 4-tuple consisting of the client IP address, client port number, server IP address, and server port number) that specifies the two endpoints that uniquely identifies each TCP connection in an internet. (TCP-IP Illustrated Volume 1, W. Richard Stevens)

In most C-derived languages, TCP connections are established and manipulated using methods on an instance of a Socket class.
https://stackoverflow.com/…/what-is-the-difference-between-a-port-and-a-socket

Unix domain socket (IPC socket – inter-process communication socket) je koncový bod pro datovou komunikaci mezi procesy na stejném operačním systému. Je to způsob, jak procesy na stejném stroji mohou mezi sebou komunikovat. A jelikož v linuxu je vše buď adresář nebo soubor, socket je soubor (speciální soubor).

When Unix programs do any sort of I/O, they do it by reading or writing to a file descriptor. A file descriptor is simply an integer associated with an open file. But (and here’s the catch), that file can be a network connection, a FIFO, a pipe, a terminal, a real on-the-disk file, or just about anything else. Everything in Unix is a file! So when you want to communicate with another program over the Internet you’re gonna do it through a file descriptor, you’d better believe it.
http://beej.us/guide/bgnet/html/#what-is-a-socket

Obecně řečeno je tedy socket endpoint sloužící pro komunikaci. Mohli jste ale ještě narazit na slovo WebSocket. To je jiný příběh. WebSocket je komunikační protokol, umožnující obousměrnou full-duplex komunikaci, který je umístěn v 7 vrstvě OSI modelu (podobně jako HTTP protokol).

Další zdroje: Unix domain socket, WebSocket