Software Development

Docker: kontener, polecenia

Luty 8, 2016 0
Podziel się:

Przeznaczeniem kontenera jest jedno lub wielokrotne wykonanie pewnej czynności określonej przez właściciela kontenera. Działający kontener oprócz swojego podstawowego zadania może wykonywać dowolne inne polecenia. Biorąc pod uwagę ideę kontenera dodatkowe polecenia powinny wspomagać działanie podstawowego polecenie. Jeżeli kontener wykonuje czynności, które można rozseparować wtedy powinny zostać stworzone osobne kontenery, każdy z osobnym i pojedynczym przeznaczeniem. Celem tego wpisu jest przybliżenie zagadnienia wykonywania poleceń przez kontener.

 

Ten wpis jest częścią serii wpisów o Dockerze. Jeżeli jakieś pojęcie jest używane bez wyjaśnienia to prawdopodobnie zostało wprowadzone w jednym z wcześniejszych wpisów.

Nadpisanie głównego polecenia kontenera

Każdy kontener posiada polecenie, które jest wykonywane podczas jego uruchomienia. Jeżeli polecenie nie zostanie podane jako parametr komendy docker run wtedy kontener przyjmie polecenie określone w swoim obrazie. Czas działania kontenera (status “up”) jest tożsamy z czasem wykonywania jego polecenia.

Polecenie obrazu ubuntu to /bin/bash dlatego po uruchomieniu jego kontenera mogliśmy odnieść wrażenie, że nic się nie stało. Żeby nadpisać polecenie obrazu należy stworzyć kontener z dodatkowym parametrem.

docker run [nazwa obrazu] [polecenie]
docker run ubuntu sleep 10

W wyniku powyższego wywołania zostanie stworzony i uruchomiony kontener obrazu ubuntu o losowej nazwie. Kontener wykona polecenie sleep 10 (odczeka 10 sekund), a następnie zostanie zatrzymany. Każde kolejne wywołanie tego polecenia spowoduje utworzenie nowego kontenera o takim samym przeznaczeniu (poleceniu). Polecenie sleep stanowi tylko prosty przykład. W praktyce kontener może wykonywać dowolnie złożone polecenie. Jedynym wymogiem jest zapewnienie kontenerowi odpowiednich zasobów, np. zależnych pakietów, innych usług, mocy obliczeniowej.

Wykonanie polecenia na działającym kontenerze

Jeżeli kontener jest uruchomiony (status “up”) możemy wykonać na nim dowolne polecenie za pomocą wywołania:

docker exec [id lub nazwa kontenera] [polecenie]

Kontener obrazu ubuntu z poleceniem sleep 10 działa tylko przez 10 sekund. Żeby komfortowo przetestować komendę docker exec powinniśmy uruchomić kontener z poleceniem, które nie niesie ze sobą ograniczeń czasowych. Stwórzmy kontener serwera bazy danych postgres. Domyślne polecenie obrazu postgres uruchamia serwer bazy danych. Czas działania takiego kontenera będzie tożsamy z czasem działania serwera bazy danych.

docker run --name="postgres-container" postgres

Za pomocą polecenia psql -U postgres -c"\list" wyświetlmy listę baz danych dostępnych w kontenerze.

docker exec postgres-container psql -U postgres -c"\list"

Powinniśmy zobaczyć domyślną listę baz danych:

   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 [...]

Stwórzmy własna bazę danych o nazwie “docker“.

docker exec postgres-container psql -U postgres -c"CREATE DATABASE docker"

Po ponownym wyświetleniu baz danych powinniśmy zobaczyć listę powiększoną o bazę “docker”

   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 docker    | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 [...]

Spis wpisów w serii

5 / 5
Tagi: ,
Piotr Wierzgała
Autor: Piotr Wierzgała
Programista Python zainteresowany tematyką uczenia maszynowego.

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

Zostaw komentarz