Dockerfile to prosty plik tekstowy, który zawiera wszystkie polecenia, które użytkownik może wywołać w wierszu poleceń, aby złożyć lub zbudować obraz. Za pomocą kompilacji docker można łatwo zautomatyzować kompilację, która uruchamia wiele poleceń zdefiniowanych w pliku docker po kolei.
Na przykład, chcesz pobrać obraz dockera z centrum dokera dla swoich konkretnych potrzeb programistycznych. Następnie chcesz zaktualizować obraz, zainstalować pakiety dla swojego procesu rozwoju. W takim przypadku możesz utworzyć plik dockerfile, uwzględnić wszystkie parametry odpowiadające Twoim konkretnym potrzebom i zbudować własny obraz. Po utworzeniu pliku docker, możesz go wielokrotnie używać do budowania tego samego obrazu bez ręcznego instalowania wszystkich pakietów wymaganych w procesie rozwoju.
Podstawowy plik dockera
Przed rozpoczęciem pracy z plikiem dockerfile, jeśli ważne jest, aby wiedzieć, jak utworzyć plik docker. Dockerfile zawiera określone słowa kluczowe, które można wykorzystać do zbudowania określonego obrazu. Poniżej znajduje się krótkie wyjaśnienie wszystkich słów kluczowych użytych w pliku docker:
- Z: Służy do zdefiniowania obrazu bazowego, na którym będziemy budować.
- DODAJ: Służy do dodawania plików do budowanego kontenera. Mówiąc prościej, RUN służy do uruchamiania poleceń i zatwierdzania wyniku
- BIEGAĆ: Służy do dodawania warstw do obrazu podstawowego poprzez zainstalowanie komponentów.
- CMD: Służy do uruchamiania poleceń na początku kontenera. Te polecenia są uruchamiane tylko wtedy, gdy podczas uruchamiania kontenera nie określono żadnego argumentu.
- PUNKT WEJŚCIA: Służy do uruchamiania poleceń podczas procesu inicjalizacji kontenera. Musisz użyć ENTRYPOINT w swoim pliku dokowanym, jeśli chcesz automatycznie uruchomić kontener po zbudowaniu obrazu.
- ENV: Służy do definiowania zmiennych środowiskowych w czasie wykonywania kontenera.
- EXPOSE: Służy do określenia portu nasłuchiwania, aby umożliwić pracę w sieci w czasie wykonywania.
- KONSERWATOR: Służy do określenia nazwy i identyfikatora e-mail twórcy obrazu.
- UŻYTKOWNIK: Służy do określenia nazwy użytkownika używanej do uruchomienia kontenera.
- TOM: Służy do umożliwienia dostępu z kontenera do katalogu na hoście Docker.
- KIERUNEK ROBOCZY: Służy do określenia ścieżki polecenia, które ma zostać wykonane w czasie wykonywania run.
- ETYKIETA: Służy do dodawania etykiet do obrazu dokowanego.
Tworzenie pliku Docker
W tej sekcji utworzymy plik docker, aby zbudować obraz serwera LAMP z podstawowego obrazu Ubuntu.
Najpierw musisz utworzyć katalog do przechowywania pliku docker. Możesz go utworzyć za pomocą następującego polecenia:
mkdir LAMPNastępnie utwórz katalog o nazwie Dockerfile wewnątrz katalogu:
LAMPA nano/plik DockerckerDodaj następujące wiersze:
Z ubuntu: najnowszeKONSERWATOR Hitesh Jethva
ENV DEBIAN_FRONTEND=nieinteraktywny
URUCHOM apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl","-D","PRZEGLĄD"]
EKSPOZYCJA 8080
Zapisz i zamknij plik, gdy skończysz.
Budowanie obrazu za pomocą Dockerfile
Po utworzeniu pliku Dockerfile możesz łatwo utworzyć niestandardowy obraz LAMP za pomocą pliku Dockerfile.
Najpierw zmień katalog na LAMP i uruchom następujące polecenie, aby zbudować obraz z tego pliku:
LAMPA CDDocker build -t "lampa:Dockerfile".
Powyższe polecenie rozpocznie pobieranie najnowszego obrazu Ubuntu z Docker Hub i zainstalowanie niezbędnych pakietów określonych w pliku Dockerfile. Po pomyślnym zbudowaniu obrazu powinieneś zobaczyć następujące dane wyjściowe:
Wysyłanie kontekstu kompilacji do demona Docker 2.048kBKrok 1/6: Z ubuntu: najnowszela
najnowsze: Pobieranie z biblioteki/ubuntu
54ee1f796a1e: Ciągnięcie zakończone
f7bfea53ad12: Ciągnięcie zakończone
46d371e02073: Ciągnięcie zakończone
b66c17bbf772: Ciągnięcie zakończone
Podsumowanie: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6ee2cda2be67a5
Status: Pobrano nowszy obraz dla ubuntu:najnowszy
---> 4e2eef94cd6b
Krok 2/6: KONSERWATOR Hitesh Jethva
---> Działa w 047977af2c2a
Wyjmowanie pojemnika pośredniego 047977af2c2a
---> 1331df625c4c
Krok 3/6 : ENV DEBIAN_FRONTEND=nieinteraktywny
---> Bieganie w 3597152c7a1b
Wyjmowanie pojemnika pośredniego 3597152c7a1b
---> 86c82c95e75d
Krok 4/6 : URUCHOM apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Wyjmowanie pojemnika pośredniego 322532299fd9
---> f6897a9554f7
Krok 5/6 : CMD ["apachectl","-D","PRZEGLĄD"]
---> Działa w 669635bc8bcb
Wyjmowanie pojemnika pośredniego 669635bc8bcb
---> e8400eb2e677
Krok 6/6 : EKSPOZYCJA 8080
---> Działa w 937ae2b2d305
Wyjmowanie pojemnika pośredniego 937ae2b2d305
---> 2123a857361d
Pomyślnie zbudowano 2123a857361d
Pomyślnie otagowano lampę:Dockerfile
Możesz teraz wyświetlić listę nowo skompilowanego obrazu, uruchamiając następujące polecenie:
obrazy dokowanePowinieneś zobaczyć następujące dane wyjściowe:
REPOZYTORIUM IDENTYFIKATOR OBRAZU UTWORZONY ROZMIARlampa Dockerfile 2123a857361d 44 sekundy temu 520MB
ubuntu najnowszy 4e2eef94cd6b 8 dni temu 73.9 MB
Teraz masz w ręku niestandardowy obraz serwera LAMP. Możesz także zobaczyć historię każdego polecenia za pomocą następującego polecenia:
Lampa historii dockera:DockerfilePowinieneś zobaczyć następujące dane wyjściowe:
OBRAZ UTWORZONY WEDŁUG ROZMIARU KOMENTARZ2123a857361d 16 minut temu /bin/sh -c #(nop) EKSPOZYCJA 8080 0B
e8400eb2e677 16 minut temu /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 minut temu /bin/sh -c aktualizacja apt-get -y && apt-get inst… 446MB
86c82c95e75d 17 minut temu /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c 17 minut temu /bin/sh -c #(nop) KONSERWATOR Hitesh Jethva 0B
4e2eef94cd6b 8 dni temu /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
Tworzenie kontenera z obrazu LAMP
Teraz możesz uruchomić kontener ze swojego obrazu za pomocą następującego polecenia:
Docker run -dit lampa:DockerfilePo uruchomieniu kontenera powinieneś zobaczyć następujące dane wyjściowe:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Uruchomiony kontener można zweryfikować za pomocą następującego polecenia:
doker psPowinieneś otrzymać następujące dane wyjściowe:
IDENTYFIKATOR KONTENERA OBRAZ POLECENIE UTWORZENIE STANU NAZWY PORTÓWc14794784eb2 lamp:Dockerfile "apachectl -D FOREGR… " 2 minuty temu W górę 2 minuty 0.0.0.0:8080->8080/tcp dziwaczny_ramanujan
Wniosek
W tym przewodniku dowiedziałeś się, co to jest Dockerfile i jak zbudować obraz dockera za pomocą Dockerfile. Jest to bardzo przydatne do tworzenia niestandardowych obrazów zamiast wprowadzania zmian do ściągniętego obrazu.