[4] Docker – Pliki i automatyzacja
24 lutego 2021Uż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. |