도커
I’m happy to help translate the article, but I need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the text, I’ll translate it into Korean while preserving the original formatting, markdown, and technical terms.
Docker란 무엇인가
Docker 컨테이너는 Docker 이미지의 실행 중인 인스턴스입니다. 여기에는 애플리케이션, 라이브러리 및 런타임이 포함되며, 호스트 시스템으로부터 격리됩니다.
Docker를 사용하는 이유
- Consistency – 노트북, CI, 그리고 프로덕션에서 동일한 환경을 제공합니다.
- Portability – Docker 엔진이 실행되는 어디서든 이미지가 실행됩니다.
- Efficiency – 컨테이너는 호스트 커널을 공유하여 빠르게 시작하고 VM보다 메모리를 적게 사용합니다.
- Simplifies CI/CD & microservices – 작은 독립 서비스들을 쉽게 빌드, 배포 및 확장할 수 있습니다.
핵심 개념
- Image – 불변 블루프린트(읽기 전용).
- Container – 이미지의 실행 인스턴스(위에 쓰기 가능한 레이어).
- Registry – 이미지 저장소(예: Docker Hub).
- Dockerfile – 이미지 빌드 지시문이 포함된 텍스트 파일.
- Volume / Bind mount – 컨테이너 외부에 데이터를 영구 보관하거나 공유하는 방법.
- Network drivers – bridge(기본), host, none, overlay(멀티‑호스트용).
- Layer caching – 빌드 시 변경되지 않은 레이어를 재사용하여 빌드 속도를 높임.
Minimal Dockerfile — 각 라인의 의미
FROM openjdk:17-jdk-slim # base image with Java runtime
WORKDIR /app # set working directory inside the image
COPY . /app # copy files from host into the image
EXPOSE 8080 # documents a port (does not publish it)
ENTRYPOINT ["java","-jar","app.jar"] # executable used when container starts
- FROM – 기본 이미지(베이스 이미지)를 지정합니다.
- WORKDIR – 이후 명령들이 실행될 작업 디렉터리를 설정합니다.
- COPY – 호스트에 있는 파일을 이미지 안으로 복사합니다.
- EXPOSE – 컨테이너가 수신하는 포트를 선언합니다(문서화용이며 실제 포트를 공개하지는 않음).
- ENTRYPOINT – 컨테이너가 시작될 때 실행되는 명령을 정의합니다.
팁: 이미지에 포함하고 싶지 않은 빌드 산출물을 제외하려면 .dockerignore 파일을 추가하세요.
필수 명령어 (정리된 치트시트)
일반 정보
docker --version # show Docker client version
docker info # daemon summary (containers, images, storage driver)
이미지 빌드
docker build -t myapp:1.0 . # build image from Dockerfile in current dir
docker build --no-cache -t myapp:1.0 . # rebuild without cache
실행 및 라이프사이클 (생성, 시작, 정지, 제거)
docker run --name web -d -p 8080:80 nginx:latest
# -d (detached), -p hostPort:containerPort, --name containerName
docker run -it --rm ubuntu bash
# -it interactive, --rm remove on exit
docker ps # list running containers
docker ps -a # list all containers (including stopped)
docker stop # graceful stop
docker start # start stopped container
docker restart # restart
docker rm # remove container
이미지
docker pull nginx:latest # download image from registry
검사, 실행 및 로그
docker logs -f # follow logs
docker exec -it bash # open a shell inside a running container
docker inspect # detailed low‑level information
볼륨 및 마운트 (데이터 지속)
docker volume create myvol
docker run -v myvol:/data ... # named volume
docker run -v /host/path:/data ... # bind mount
docker volume ls
docker volume rm myvol
- Named volumes (Docker에서 관리) 은 데이터베이스와 이식성에 가장 적합합니다.
- Bind mounts 는 호스트 폴더를 컨테이너에 직접 매핑합니다 (개발에 유용).
네트워킹 (빠르게)
docker network ls
docker network create mynet
docker run --network mynet ...
docker network inspect mynet
정리 (디스크 공간 확보)
docker system df
docker image prune # remove dangling images
docker container prune # remove stopped containers
docker system prune -a # remove unused images/containers/networks (use with care)
Compose (다중 컨테이너 앱)
docker compose up -d
docker compose down
docker compose ps
docker compose logs -f
모니터링 및 디버그
docker stats # live resource usage per container