Jaka jest różnica między obrazem a kontenerem?
sobes.tech AI
Odpowiedź od AI
Obraz (image) to statyczny, niezmienny zrzut systemu plików i parametrów konfiguracyjnych niezbędnych do uruchomienia aplikacji. Służy jako szablon.
Kontener (container) to uruchomiona instancja obrazu. Jest dynamiczny i reprezentuje działający proces z własnym interfejsem sieciowym, systemem plików (opartym na obrazie) i izolowanym środowiskiem.
| Charakterystyka | Obraz | Kontener |
|---|---|---|
| Stan | Niezmienny | Zmienny |
| Podmiot | Szablon | Działająca instancja |
| Rozmiar | Zazwyczaj mniejszy niż działający kontener | Może być większy z powodu warstwy zapisu |
| Cykl życia | Tworzony, przechowywany | Tworzony, uruchamiany, zatrzymywany, usuwany |
Przykład: Dockerfile:
# Obraz bazowy
FROM ubuntu:latest
# Kopiowanie aplikacji
COPY app /app
# Instalacja zależności
RUN apt-get update && apt-get install -y python3
# Określenie katalogu roboczego
WORKDIR /app
# Komenda uruchomieniowa
CMD ["python3", "main.py"]
Ten Dockerfile opisuje, jak zbudować obraz. Po zbudowaniu obrazu, na przykład komendą docker build -t myapp ., otrzymujemy statyczny obraz myapp.
Następnie, uruchamiając komendę docker run -d myapp, tworzymy kontener na podstawie tego obrazu. Kontener ten jest aktywnym procesem, w którym uruchamia się nasza aplikacja. Można utworzyć wiele kontenerów z jednego obrazu. Zmiany wewnątrz kontenera (np. zapis plików) nie wpływają na sam obraz ani na inne kontenery utworzone z tego samego, dzięki mechanizmowi Copy-on-Write.