이미지의 사이즈와 보안에 대해 아는 것은 중요합니다.
작은 이미지는 빠른 빌드를 보장하고 이미지를 다운로드 할때 적은 네트워크 오버헤드를 사용합니다.
보안도 중요한데 컨테이너 이미지는 보안 취약점을 가질 수 있기 때문에 보안 취약점을 가진 컨테이너 사용시 보안 위협을 겪게 됩니다.
아래에서 더 자세히 알아봅시다.
FROM node:14-alpine
RUN apt-get update && \
apt-get install -y some-required-package
RUN apt-get update && \
apt-get install -y some-required-package && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
FROM node:14-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM node:14-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm install --production
CMD ["npm", "start"]
Keep base images updated
기본 이미지를 항상 최신으로 유지하는 것이 좋습니다.
Avoid running container as root
docker는 호스트의 커널을 공유하기 때문에 컨테이너에서 root 권한을 사용하는 것은 보안에 좋지 않습니다.
그렇기 때문에 유저 계정을 만들어 유저 계정으로 접속하고 컨테이너의 애플리케이션이 실행되게 하는 것이 좋습니다.
RUN addgroup -g 1000 appuser && \
adduser -u 1000 -G appuser -D appuser
USER appuser
COPY package*.json ./
COPY src/ src/