Docker создаем собственный образ | уроки docker | #3
Spisu treści:
Obraz Docker to schemat kontenerów Docker, który zawiera aplikację i wszystko, czego potrzebujesz do uruchomienia aplikacji. Kontener to środowisko wykonawcze obrazu.
W tym samouczku wyjaśnimy, czym jest plik Dockerfile, jak go utworzyć i jak zbudować obraz Docker za pomocą Dockerfile.
Co to jest Dockerfile
Plik Docker to plik tekstowy zawierający wszystkie polecenia, które użytkownik może uruchomić w wierszu poleceń, aby utworzyć obraz. Zawiera wszystkie instrukcje potrzebne Dockerowi do zbudowania obrazu.
Obrazy Docker składają się z szeregu warstw systemu plików reprezentujących instrukcje w pliku Docker obrazu, który tworzy program wykonywalny.
Plik Docker ma następującą postać:
# Comment INSTRUCTION arguments
INSTRUCTION
nie jest rozróżniana wielkość liter, ale konwencja polega na używaniu WIELKICH LITEK dla nazw.
Poniżej znajduje się lista z krótkim opisem niektórych najczęściej używanych instrukcji Dockerfile:
- ARG - Ta instrukcja pozwala zdefiniować zmienne, które mogą być przekazywane w czasie kompilacji. Możesz także ustawić wartość domyślną. OD - Podstawowy obraz do budowy nowego obrazu. Ta instrukcja musi być pierwszą instrukcją bez komentarza w Dockerfile. Jedynym wyjątkiem od tej reguły jest sytuacja, gdy chcesz użyć zmiennej w argumencie
FROM. W takim przypadkuFROMmoże być poprzedzony jedną lub większą liczbą instrukcjiARG. ETYKIETA - Służy do dodawania metadanych do obrazu, takich jak opis, wersja, autor..etc. Możesz podać więcej niż jednąLABEL, a każda instrukcjaLABELjest parą klucz-wartość. RUN - polecenia określone w tej instrukcji zostaną wykonane podczas procesu kompilacji. Każda instrukcjaRUNtworzy nową warstwę na bieżącym obrazie. DODAJ - Służy do kopiowania plików i katalogów z określonego źródła do określonego miejsca docelowego na obrazie dokera. Źródłem mogą być lokalne pliki lub katalogi lub adres URL. Jeśli źródłem jest lokalne archiwum tar, jest ono automatycznie rozpakowywane do obrazu Docker. KOPIUJ - Podobny doADDale źródłem może być tylko lokalny plik lub katalog. ENV - Ta instrukcja pozwala zdefiniować zmienną środowiskową. CMD - służy do określenia polecenia, które zostanie wykonane po uruchomieniu kontenera. Możesz użyć tylko jednej instrukcjiCMDw Dockerfile. ENTRYPOINT - podobnie jakCMD, instrukcja ta określa, jakie polecenie zostanie wykonane podczas uruchamiania kontenera. WORKDIR - ta dyrektywa ustawia bieżący katalog roboczy dla instrukcjiRUN,CMD,ENTRYPOINT,COPYiADD. UŻYTKOWNIK - Ustaw nazwę użytkownika lubUIDktóre będą używane podczas uruchamiania następujących instrukcjiRUN,CMD,ENTRYPOINT,COPYiADD. GŁOŚNOŚĆ - Umożliwia zamontowanie katalogu komputera hosta w kontenerze. EKSPOZYCJA - Służy do określania portu, na którym kontener nasłuchuje w czasie wykonywania.
Aby wykluczyć dodawanie plików i katalogów do obrazu, utwórz plik
.dockerignore
w katalogu kontekstowym. Składnia
.dockerignore
jest podobna do tej z pliku
.dockerignore
Gita.
Pełne odniesienie i szczegółowe objaśnienie instrukcji Dockerfile można znaleźć na oficjalnej stronie referencyjnej pliku Dockerfile.
Utwórz plik Docker
Najczęstszym scenariuszem podczas tworzenia obrazów Docker jest pobranie istniejącego obrazu z rejestru (zwykle z Docker Hub) i określenie zmian, które chcesz wprowadzić w obrazie podstawowym. Najczęściej stosowanym obrazem podstawowym podczas tworzenia obrazów Docker jest Alpine, ponieważ jest mały i zoptymalizowany do pracy w pamięci RAM.
W tym przykładzie utworzymy obraz Dockera dla serwera Redis. Wykorzystamy najnowszą wersję Ubuntu 18.04 jako obraz podstawowy.
Najpierw utwórz katalog, który będzie zawierał plik Docker i wszystkie niezbędne pliki:
mkdir ~/redis_docker
Przejdź do katalogu i utwórz następujący plik Dockerfile:
cd ~/redis_docker
nano Dockerfile
Plik Docker
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Wyjaśnijmy znaczenie każdej linii w Dockerfile:
- W linii
1definiujemy obraz podstawowy. InstrukcjaRUNktóra rozpoczyna się w linii3, zaktualizuje indeks apt, zainstaluje pakiet „redis-server” i wyczyści pamięć podręczną apt. Polecenia użyte w instrukcjach są takie same, jak polecenia, których użyłbyś do zainstalowania redis na serwerze Ubuntu. Instrukcja EXPOSE określa port, na którym nasłuchuje serwer redis. W ostatnim wierszu używamy instrukcjiCMDaby ustawić polecenie domyślne które zostanie wykonane po uruchomieniu kontenera.
Zapisz plik i zamknij edytor.
Budowanie obrazu
Następnym krokiem jest zbudowanie obrazu. Aby to zrobić, uruchom następującą komendę z katalogu, w którym znajduje się plik Docker:
docker build -t linuxize/redis.
Opcja
-t
określa nazwę obrazu oraz opcjonalnie nazwę użytkownika i tag w formacie „nazwa użytkownika / imagename: tag”.
Dane wyjściowe procesu kompilacji będą wyglądać mniej więcej tak:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Po zakończeniu procesu kompilacji nowy obraz pojawi się na liście obrazów:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Prowadzenie kontenera
Teraz, gdy obraz jest utworzony, możesz uruchomić z niego kontener, uruchamiając:
docker run -d -p 6379:6379 --name redis linuxize/redis
Opcje
-d
--name redis
uruchomić kontener w trybie odłączonym, opcja
-p 6379:6379
opublikuje port 6379 na maszynie hosta, a opcja
--name redis
określa nazwę kontenera. Ostatni argument
linuxize/redis
to nazwa obrazu, która służy do uruchamiania kontenera.
Po uruchomieniu kontenera użyj następującego polecenia, aby wyświetlić listę wszystkich działających kontenerów:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Aby sprawdzić, czy wszystko działa tak, jak powinno, użyj
redis-cli
do połączenia z kontenerem
redis-cli
:
redis-cli ping
Serwer Redis powinien odpowiedzieć
PONG
.
Wniosek
Ten samouczek obejmował jedynie podstawy korzystania z Dockerfiles do tworzenia obrazów. Aby dowiedzieć się więcej na temat pisania Dockerfiles i zalecanych najlepszych praktyk, zobacz Najważniejsze wskazówki dotyczące pisania Dockerfiles.
BMP Wrap pozwala ci ukryć pliki jako obrazy BMP i wysyłać e-mailem dowolny typ pliku jako załącznik
Oprócz ukrywania plików wewnątrz Pliki obrazów BMP, konwertujące pliki w celu umożliwienia wysyłania ich jako załączników do wiadomości e-mail, BMP Wrap służy również do szyfrowania plików.
Nie można zapisać pliku, ponieważ nie można odczytać pliku źródłowego
Jeśli nie możesz pobrać i zobaczysz appdatalocaltemp nie można zapisać, ponieważ plik źródłowy nie mógł zostać odczytany w Firefoksie, tutaj jest to, co musisz zrobić.
Jak usunąć hasło z pliku PDF za pomocą bezpłatnego oprogramowania lub narzędzia online
Szukasz bezpłatnego pobierania pliku PDF Unlocker lub narzędzia PDF Cracker Online? Usuń hasło do PDF i Odblokuj pliki PDF za pomocą darmowych lub narzędzi online.







