8.1 Tagowanie w Dockerze
Tagowanie w Dockerze to proces przypisywania tagu do obrazu, który upraszcza zarządzanie wersjami. Dzięki temu wdrażanie i aktualizacja aplikacji są bardziej wygodne i kontrolowane. W tym wykładzie szczegółowo omówimy, czym są tagi, jak ich używać i jakie zalecenia pomogą Ci pracować z nimi efektywniej.
Tag (tag) w Dockerze — to etykieta, która pozwala identyfikować konkretną wersję obrazu. Tagi upraszczają śledzenie zmian i pomagają wybierać odpowiednie wersje dla różnych środowisk, takich jak development, testing i produkcja.
Podstawowe koncepcje tagów:
- Unikalność: tag jednoznacznie identyfikuje konkretną wersję obrazu.
- Wersjonowanie: za pomocą tagów oznaczane są wersje obrazów, na przykład, v1.0, v2.0, latest.
- Elastyczność: tagi wykorzystywane są do tworzenia obrazów odpowiadających pewnym etapom rozwoju, na przykład,
beta
,stable
,prod
.
8.2 Jak korzystać z tagów
1. Przypisanie tagów podczas budowy obrazu
Możesz przypisać tag do obrazu podczas jego budowy za pomocą parametru -t
polecenia docker build
.
Przykład:
W tym przykładzie obrazowi przypisuje się nazwę myapp
i tag 1.0.
docker build -t myapp:1.0 .
2. Przypisanie dodatkowych tagów do istniejącego obrazu
Możesz dodać tagi do już istniejącego obrazu za pomocą polecenia docker tag
.
Przykład:
Ten przykład przypisuje obrazowi myapp:1.0
dodatkowy tag latest
.
docker tag myapp:1.0 myapp:latest
3. Korzystanie z tagów podczas uruchamiania kontenerów
Kiedy uruchamiasz kontener, możesz wskazać konkretny tag obrazu, którego chcesz użyć.
Przykład:
Ten przykład uruchamia kontener na podstawie obrazu myapp
z tagiem 1.0
.
docker run -d myapp:1.0
8.3 Praktyka tagowania
Używanie semantycznego wersjonowania
Semantyczne wersjonowanie (Semantic Versioning) to standardowa praktyka przypisywania wersji, która pomaga zrozumieć poziom zmian w obrazie.
Format semantycznego wersjonowania:
<major>.<minor>.<patch>
Gdzie:
-
major
: Główne zmiany, niezgodne z poprzednimi wersjami. -
minor
: Nowe funkcje, zgodne z poprzednimi wersjami. -
patch
: Poprawki błędów i inne drobne zmiany.
Przykład:
docker build -t myapp:2.1.3 .
Używanie dodatkowych oznaczeń
Dodatkowe oznaczenia pomagają określić stan obrazu, na przykład beta
, alpha
, stable
lub prod
.
Przykład:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Aktualizacja tagów
Podczas aktualizacji obrazu zaleca się zmieniać tagi, aby ułatwić śledzenie zmian. Tag latest
jest często używany do oznaczenia najnowszej wersji obrazu.
Przykład:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Przykłady zastosowania tagów
Przykłady użycia tagów w różnych środowiskach:
Przykład 1: Tworzenie aplikacji
Do tworzenia aplikacji często używane są obrazy z tagami, które wskazują na aktualną wersję lub status developmentu, na przykład dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Przykład 2: Testowanie
W środowiskach testowych korzysta się z obrazów z tagami określającymi konkretne wersje lub statusy, takie jak beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Przykład 3: Produkcja
W środowiskach produkcyjnych ważne jest używanie stabilnych i sprawdzonych wersji obrazów, oznaczonych tagami stable
, prod
, albo wersjami semantycznymi, takimi jak 1.1.0-stable
.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Najlepsze praktyki
1. Zawsze używaj semantycznej wersji
Trzymaj się semantycznego wersjonowania dla wszystkich obrazów. To pomaga jasno odróżnić poziomy zmian i ułatwia zarządzanie wersjami.
2. Używaj zrozumiałych i sensownych tagów
Używaj tagów, które jasno odzwierciedlają stan lub cel obrazu (na przykład beta
, stable
, prod
).
3. Unikaj używania latest w produkcji
Tag latest
może być przydatny podczas tworzenia i testowania, ale w produkcji lepiej używać konkretnych wersji, aby uniknąć nieprzewidywalnych zmian.
4. Dokumentuj użycie tagów
Dokumentuj, jak i do czego są używane tagi w twoim projekcie. To pomoże zespołowi lepiej zrozumieć proces wersjonowania i zmniejszy prawdopodobieństwo błędów.
Przykłady Dockerfile z użyciem tagów
Przykład 1: Tworzenie i przypisywanie tagów
# Dockerfile dla wersji 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Polecenia do budowania i tagowania
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Przykład 2: Aktualizacja obrazu i tagowanie
# Dockerfile dla wersji 1.1.0 z nową funkcją
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Polecenia do budowania i tagowania
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION