Sobes.tech
Junior

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.