[Docker] Docker 문법 완전 정복하기

비전·2025년 4월 19일

Docker

목록 보기
6/9

도커의 기본 문법부터 실무에 자주 쓰이는 명령어 Dockerfile 작성법, 실전 예제까지 한 번에 정리

컨테이너 기술은 이제 선택이 아닌 필수가 되었습니다.
특히 DevOps, 클라우드, 인프라, 개발 어느 분야든 도커는 기본입니다.
이 글에서는 도커의 핵심 문법을 실무에서 자주 쓰이는 기준으로 한 번에 정리합니다.

🔧 도커 설치 후 기본 확인

docker --version  # 도커 버전 확인
docker info  # 도커 시스템 정보 확인

명령어를 크게 컨테이너와 이미지 명령으로 나누어 이해하면 쉽습니다.
그렇다면 컨테이너 vs 이미지 차이가 무엇일까요

컨테이너 이미지 차이

컨테이너는 인스턴스라고 생각하고, 이미지는 실행 템플릿 입니다.
즉, 이미지를 Dockerfile로 빌드하고 컨테이너에서 Docker run으로 실행할 수 있습니다.
따라서 1개의 이미지로 여러 컨테이너에 적용할 수 있습니다.

컨테이너를 아파트 건설에 비유하자면,
Image -> 아파트 설계도(도면)
Container -> 실제로 지어진 아파트 건물

🧪 컨테이너 실행 기본 명령어

docker run hello-world  # 기본 테스트 이미지
docker run -it ubuntu /bin/bash  #우분투 컨테이너에서 bsah 진입
docker ps  # 실행 중인 컨테이너 확인
docker ps -a # 모든 컨테이너 확인
docker rename [container] [new_name]  # 컨테이너 이름 변경
docker start [container] # 지정한 컨테이너 실행
docker stop [container]  # 컨테이너 중지
docekr rm [container] # 컨테이너 삭제
docker wait [container] # 실행 중인 다른 컨테이너가 중지될 때 까지 대기
docker exec [container] [command] # 실행 중인 컨테이너 내에서 명령어 실행
docker logs [container] # 컨테이너 로그 확인
docker stats [container] # 컨테이너 실시간 성능(리소스) 모니터링
docker inspect [container] # 컨테이너 상세 정보 확인
docker attach [container] # 실행 중인 컨테이너에 연결하여 표준 입력, 출력 및 오류 스트림 받아오기
docker top [container] # 컨테이너 내 프로세스 목록 확인
docker pause [container] / docker unpause [container] 컨테이너 프로세스 일시정지 / 재개

옵션 설명

  • -it : 인터랙티브 + 터미널 모드
  • -d : 백그라운드 실행
  • --name : 컨테이너 이름 지정
  • -p 8080:80 포트 매팅 (호스트 : 컨테이너)

📦 이미지 관련 명령어

컨테이너 명령에 비해 이미지 명령은 그 수 가 적습니다.

docker build -t image_name # 현재 디렉터리 경로에서 image_name으로 태깅된 도커 이미지 빌드
docker create [image] # 지정한 이미지에서 실행 중이 아닌 컨테이너 생성
docker run [image] #  지정한 이미지를 기반으로 컨테이너 생성 및 실행
docker pull nginx  # 이미지 다운로드
docker images  # 이미지 목록 확인
docker rmi [image]  # 이미지 삭제
docker tag [image] 내이미지: 버전  # 이미지 태깅
docker history [image] # 이미지 빌드 히스토리 확인
docker save [image] > [filename.tar] # 도커 이미지를 tar파일로 저장(백업)
docker load < [filename.tar] # tar파일로 저장된 이미지를 로드하여 도커 이미지로 복원
docker export [container] > [filename.tar] # 컨테이너를 tar파일로 내보내기
docker import [filename.tar] # tar 파일에서 새로운 이미지 가져오기

출처 : https://aws.amazon.com/ko/compare/the-difference-between-docker-images-and-containers/

📄 예제 : Dockerfile 문법

# 베이스 이미지 선택
FROM ubuntu:20.04

# 작성자 정보
LABEL maintainer="me@example.com"

# 패키지 설치
RUN apt-get update && apt-get install -y nginx

# 파일 복사
COPY index.html /var/www/html/

# 포트 노출
EXPOSE 80

# 컨테이너 시작 시 실행할 명령
CMD ["nginx", "-g", "daemon off;"]

✅전체 Docker 실무 흐름

1. Dockerfile 작성
2. 이미지 빌드(build)
3. 이미지 실행해서 테스트(run)
4. 이미지 태깅(tag)
5. 이미지 푸시(push)
6. 이미지 풀(pull)
7. 컨테이너 실행(run)
8. 컨테이너 관리 (logs, exec, stop, rm 등)

번외

네트워크 관련 명령어

docker network ls  # 도커 네트워크 목록 확인
docker network create [network_name]  # 새 네트워크 생성
docker network connect [network_name] [container]  # 컨테이너를 특정 네트워크에 연결
docker network disconnect [network_name] [container]  # 컨테이너에서 네트워크 분리

볼륨 관련 명령어

docker volume ls  # 도커 볼륨 목록 확인
docker volume create [volume_name]  # 새로운 볼륨 생성
docker volume inspect [volume_name]  # 볼륨 정보 확인
docker volume rm [volume_name]  # 사용하지 않는 볼륨 삭제

도커 컴포즈 관련 명령어

docker-compose up  # docker-compose.yml 파일에 정의된 서비스들 실행
docker-compose down  # 실행 중인 컨테이너와 네트워크, 볼륨 등을 정리
docker-compose build  # docker-compose.yml 파일을 기반으로 이미지를 빌드
docker-compose logs  # 도커 컴포즈로 실행된 서비스들의 로그 확인

기타 유용한 명령어

docker system prune  # 사용하지 않는 컨테이너, 네트워크, 이미지, 볼륨을 모두 삭제
docker info  # 도커 시스템에 대한 정보 (설정, 버전 등) 확인
docker version  # 도커 클라이언트 및 서버의 버전 확인
docker login  # Docker Hub와 같은 레지스트리에 로그인
profile
아는 만큼 보인다

0개의 댓글