Docker to technologia, która wykorzystuje wirtualizację na poziomie systemu operacyjnego (ang. OS-level virtualization). Docker umożliwia dostarczanie aplikacji w postaci kontenera. Kontener to odizolowane środowisko, które posiada własne oprogramowanie, konfigurację i zależności. Takie rozwiązanie umożliwia użycie kontenera w różnych środowiskach wdrożeniowych (np. lokalnym, developerskim, testowym i produkcyjnym), ujednolicając zależności pomiędzy środowiskami.

Tworzenie obrazu – Dockerfile

Dockerfile to plik, w którym znajdują się instrukcje do stworzenia własnego obrazu. Na podstawie obrazu tworzone są kontenery.

FROM bash:lastest
CMD ["echo", "Hi"]

W pierwszej linii powyższego przykładu został zdefiniowany publicznie dostępny obraz, na podstawie którego zostanie zbudowany nasz obraz. W tym przypadku został użyty obraz, który dostarcza najnowszą wersję BASH’a. Druga linia określa jakie polecenie powinno zostać uruchomione wraz z uruchomieniem kontenera.

Aby zbudować obraz wystarczy wykonać następujące polecenie, w którym argument -t określa tag naszego obrazu:

# docker build -t demo .
STEP 1: FROM bash
STEP 2: CMD ["echo", "Hi"]
STEP 3: COMMIT demo
2cbb731fe4753d12b4801f79e20bfcf4ce18dba2162152fcfa0ad2dbb212d4c9
2cbb731fe4753d12b4801f79e20bfcf4ce18dba2162152fcfa0ad2dbb212d4c9

Zbudowane obrazy

Aby zobaczyć listę wszystkich dostępnych obrazów na naszym komputerze wystarczy wykonać następujące polecenie:

# docker images
REPOSITORY               TAG      IMAGE ID       CREATED         SIZE
localhost/demo           latest   2cbb731fe475   7 seconds ago   17.6 MB
docker.io/library/bash   latest   e155078e7721   2 weeks ago     17.6 MB

Aby usunąć obraz należy wykonać następujące polecenie:

# docker image rm [IMAGE]

Tworzenie kontenera

Aby stworzyć kontener na podstawie obrazu należy wykonać następujące polecenie, w którym argument --name określa nazwę naszego kontenera

# docker run --name demo demo
Hi

Kontenery

Aby wylistować kontenery należy wykonać następujące polecenie, w którym argument -a pozwala wyświetlić wszystkie kontenery.

# docker ps -a
CONTAINER ID  IMAGE                  COMMAND  CREATED         STATUS                     PORTS  NAMES
6e2ef30ca66e  localhost/test:latest  echo Hi  42 minutes ago  Exited (0) 42 minutes ago         test

Zarządzanie kontenerem

# docker start CONTAINER_NAME
# docker stop CONTAINER_NAME
# docker restart CONTAINER_NAME