Najlepsze praktyki bezpieczeństwa Dockerfile
Wdrażaj środki bezpieczeństwa w plikach Dockerfile, aby minimalizować luki i zmniejszać powierzchnię ataku.
Najlepsze praktyki bezpieczeństwa Dockerfile to bezpłatna lekcja Docker & DevOps Fundamentals na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Zadbaj o bezpieczeństwo plików Dockerfile!
Witaj w lekcji Najlepsze praktyki zabezpieczania plików Dockerfile! Bezpieczna aplikacja zaczyna się od bezpiecznych podstaw.
Plik Dockerfile to nie tylko skrypt kompilowania — to plan bezpieczeństwa aplikacji. Niewłaściwe praktyki w tym obszarze mogą prowadzić do poważnych luk w zabezpieczeniach.
W tej lekcji poznasz najważniejsze strategie wzmacniania bezpieczeństwa obrazów Docker i ograniczania potencjalnej powierzchni ataku.

Zacznij od zaufanych obrazów bazowych
Instrukcja FROM jest pierwszą linią obrony. Zawsze wybieraj oficjalne, regularnie utrzymywane obrazy bazowe z zaufanych źródeł, takich jak Docker Hub.
- Oficjalne obrazy: Są zweryfikowane i regularnie aktualizowane.
- Określone tagi: Unikaj
latest. Używaj tagów konkretnych wersji (np.alpine:3.18), aby zapewnić przewidywalność i stabilność. - Minimalne obrazy: Wybieraj wersje „slim” lub „alpine”. Zawierają one mniej pakietów, a więc stwarzają mniej potencjalnych luk w zabezpieczeniach.
Wybór bezpiecznego obrazu bazowego
Zobacz, jak wybór minimalnego obrazu bazowego z określoną wersją może poprawić bezpieczeństwo. Ogranicza on liczbę pakietów i narzędzi, które mogłyby zostać wykorzystane do ataku.
FROM alpine:3.18
# This is better than:
# FROM ubuntu:latest
# FROM python:latest
# Alpine is a minimal Linux distribution,
# making the image smaller and more secure.Minimalizuj rozmiar obrazu
Każdy plik, pakiet lub zależność dodane do obrazu zwiększają jego „powierzchnię ataku”. Im mniej oprogramowania, tym mniej potencjalnych luk w zabezpieczeniach.
Instaluj tylko to, co jest absolutnie niezbędne do uruchomienia aplikacji. Usuń narzędzia do kompilowania i pliki tymczasowe, gdy nie są już potrzebne.
Sprzątaj po instalacji
Podczas instalowania pakietów zawsze czyść pamięć podręczną menedżera pakietów i usuwaj niepotrzebne pliki. Zmniejsza to końcowy rozmiar obrazu i usuwa potencjalne wycieki informacji.
W przypadku obrazów opartych na Debianie (takich jak Ubuntu) użyj apt-get clean i usuń /var/lib/apt/lists/* w ramach tej samej instrukcji RUN.
FROM debian:stable-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
git && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# All in one RUN command to leverage Docker's caching and reduce layers.Nie uruchamiaj jako root!
Domyślnie procesy wewnątrz kontenera Docker są uruchamiane jako użytkownik root. Stanowi to poważne zagrożenie bezpieczeństwa!
Jeśli atakujący przejmie kontrolę nad kontenerem, uzyska uprawnienia roota, co może pozwolić mu na wydostanie się z kontenera lub przejęcie systemu hosta.
Zawsze twórz dedykowanego użytkownika bez uprawnień roota i przełączaj się na niego za pomocą instrukcji USER.
Konfigurowanie użytkownika bez uprawnień roota
Oto sposób tworzenia nowego użytkownika i instruowania Docker, aby kolejne polecenia uruchamiał jako ten użytkownik. Znacznie ogranicza to potencjalne szkody w przypadku przejęcia kontenera.
FROM alpine:3.18
# Create a non-root user and group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# Switch to the non-root user
USER appuser
CMD ["echo", "Hello from non-root user!"]Nie umieszczaj sekretów w pliku Dockerfile!
Nigdy nie umieszczaj bezpośrednio w pliku Dockerfile poufnych informacji, takich jak klucze API, hasła do baz danych czy klucze prywatne, ani nie zatwierdzaj ich w obrazie.
Każdy, kto ma dostęp do obrazu, może łatwo wydobyć te sekrety, nawet jeśli usuniesz je w późniejszej warstwie.
Zamiast tego używaj bezpiecznych metod, takich jak Docker Secrets, zmienne środowiskowe (w przypadku danych niepoufnych) lub Kubernetes Secrets w czasie działania aplikacji.
Preferuj COPY zamiast ADD
Instrukcje COPY i ADD kopiują pliki do obrazu, ale ze względów bezpieczeństwa i przejrzystości zazwyczaj preferowana jest instrukcja COPY.
COPY: Kopiuje wyłącznie lokalne pliki lub katalogi. Jest prosta i przewidywalna.ADD: Może także pobierać pliki z adresów URL i automatycznie rozpakowywać skompresowane archiwa (tar, gzip). Ta dodatkowa funkcjonalność stwarza potencjalne zagrożenia, takie jak pobieranie niezaufanej zawartości lub rozpakowywanie złośliwych archiwów.
Używaj COPY, chyba że potrzebujesz konkretnych zaawansowanych funkcji ADD i rozumiesz związane z nimi ryzyko.
Sprawdź bezpieczeństwo!
Która z poniższych praktyk dotyczących pliku Dockerfile jest kluczowym krokiem w zmniejszaniu powierzchni ataku i ograniczaniu potencjalnych luk w zabezpieczeniach?
Droga do bezpiecznego pliku Dockerfile
Świetnie! Poznałeś podstawowe najlepsze praktyki zabezpieczania plików Dockerfile, które stanowią fundament bezpiecznej konteneryzacji:
- Zaczynaj od zaufanych, minimalnych obrazów bazowych: Używaj oficjalnych, konkretnych i lekkich obrazów.
- Minimalizuj rozmiar obrazu: Instaluj tylko to, co jest potrzebne, i sprzątaj po instalacji.
- Uruchamiaj jako użytkownik bez uprawnień roota: Ograniczaj uprawnienia, aby zmniejszyć skutki potencjalnych włamań.
- Unikaj sekretów: Nigdy nie umieszczaj poufnych danych bezpośrednio w pliku Dockerfile.
- Preferuj `COPY` zamiast `ADD`: Wybieraj bardziej przewidywalną i bezpieczną instrukcję `COPY`.
Stosowanie tych praktyk znacznie poprawia poziom bezpieczeństwa aplikacji uruchamianych w kontenerach!
Często zadawane pytania
Czy lekcja „Najlepsze praktyki bezpieczeństwa Dockerfile” jest bezpłatna?
Tak — pełny tekst „Najlepsze praktyki bezpieczeństwa Dockerfile” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Najlepsze praktyki bezpieczeństwa Dockerfile”?
Wdrażaj środki bezpieczeństwa w plikach Dockerfile, aby minimalizować luki i zmniejszać powierzchnię ataku. Ćwiczysz Docker & DevOps Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Docker & DevOps Fundamentals?
Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Najlepsze praktyki bezpieczeństwa Dockerfile”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Docker & DevOps Fundamentals?
Tak. Każda lekcja Docker & DevOps Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wielostopniowe kompilacje zwiększające wydajność
- Wykorzystanie pamięci podręcznej kompilacji
- Najlepsze praktyki bezpieczeństwa Dockerfile
- Minimalizowanie rozmiaru obrazu za pomocą baz Slim i Distroless