[4] Docker – Pliki i automatyzacja

24 lutego 2021 Wyłączono przez Adam [zicherka] Nogły

Użyj pliku Dockerfile i automatycznie twórz obrazy platformy Docker. Jest to również przydatne do zarządzania konfiguracją.

[1] Dla przykładu, stworzymy prosty plik, który zainstaluje w kontenerze serwer httpd Apache i uruchomi go.

[root@vlsr01 ~]# mcedit Dockerfile

# stwórz nowy plik
FROM centos
MAINTAINER ZicherLab <root@zicher.lab>

RUN dnf -y install httpd
RUN echo "Dockerfile - APACHE httpd @ ZICHER.LAB" > /var/www/html/index.html

EXPOSE 80
CMD ["-D", "FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"]

# zbuduj obraz -> docker build –t [nazwa_obrazu]:[tagi] .
[root@vlsr01 ~]# docker build -t zicher.lab/centos-httpd:latest ./
Sending build context to Docker daemon 32.77kB
Step 1/7 : FROM centos
---> 300e315adb2f
Step 2/7 : MAINTAINER ZicherLab <root@zicher.lab>
---> Running in bc7f1410cfe5
Removing intermediate container bc7f1410cfe5
---> 3ea2d64f1237
Step 3/7 : RUN dnf -y install httpd
---> Running in b6408a1b6f2d


Successfully built 7ba01656f807
Successfully tagged zicher.lab/centos-httpd:latest

[root@vlsr01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zicher.lab/centos-httpd latest 7ba01656f807 About a minute ago 250MB
zicher.lab/centos-nginx latest dcadb9d7413e About an hour ago 289MB
centos latest 300e315adb2f 2 months ago 209MB

# uruchom kontener
[root@vlsr01 ~]# docker run -d -p 8082:80 zicher.lab/centos-httpd
a220dbbd5c81fc900d3c4a5abc3166f19fe1cd49826b9cd1313cb99a0c3f3766
[root@vlsr01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a220dbbd5c81 zicher.lab/centos-httpd "/usr/sbin/httpd -D …" 7 seconds ago Up 6 seconds 0.0.0.0:8082->80/tcp charming_hofstadter
7db34cff96b6 zicher.lab/centos-nginx "/usr/sbin/nginx -g …" About an hour ago Up About an hour 0.0.0.0:8081->80/tcp cool_carson

# sprawdź dostęp
[root@vlsr01 ~]# curl localhost:8082
Dockerfile - APACHE httpd @ ZICHER.LAB

[2] Format pliku Dockerfile wygląda tak: [INSTRUKCJA argument]

Zapoznaj się z poniższą tabelą w celu poznania działania niektórych INSTRUKCJI.

INSTRUKCJA Opis
FROM  Ustawia obraz bazowy dla kolejnych instrukcji.
MAINTAINER  Ustawia pole Autor generowanych obrazów.
RUN  Wykona wszelkie polecenia, gdy zostanie utworzony obraz Docker.
CMD  Wykona wszelkie polecenia, gdy zostanie wykonany kontener Docker.
ENTRYPOINT Wykona wszelkie polecenia, gdy zostanie wykonany kontener Docker.
LABEL  Dodaje metadane do obrazu.
EXPOSE  Informuje Docker, że kontener będzie nasłuchiwał na określonych portach sieciowych w czasie wykonywania.
ENV  Ustawia zmienną środowiskową.
ADD  Kopiuje nowe pliki, katalogi lub adresy URL zdalnych plików.
COPY  Kopiuje nowe pliki lub katalogi.

Różnice w [ADD] polegają na tym, że nie można określić zdalnego adresu URL, a także nie będzie automatycznie rozpakowywać plików archiwum.

VOLUME Tworzy punkt montowania o określonej nazwie i oznacza go jako przechowujący zewnętrznie zamontowane woluminy z hosta natywnego lub innych kontenerów
USER Ustawia nazwę użytkownika lub UID.
WORKDIR Ustawia katalog roboczy.