25.02.27 도커와 주요 명령어

2025. 2. 27. 23:51·DevOps
목차
  1. 개요
  2. 🐳 도커 ( Docker )
  3. 핵심 개념
  4. 🛠 도커 주요 명령어 정리

개요

도커에 대해 얕게만 알고있어서 간단하게 도커란 무엇인지 컨테이너가 무엇인지 정리하고

주요 명령어를 정리해본다

 

 

🐳 도커 ( Docker )

컨테이너 기반의 가상화 플랫폼으로, 애플리케이션과 그 실행 환경( 라이브러리, 종속성 등) 을 하나의 컨테이너로 패키징 하여 어디서든 실행할 수 있도록 해주는 도구이다.

 

컨테이너는 가상화에 비해 가볍고, OS에 독립적이며, 빠르게 배포 및 확장이 가능하다는 장점이 있다.

개발 과정에서 다른 라이브러리와 충돌하는 것을 방지가 하지위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때,

배포 중인 서비스를 받아와 테스트 실행 할 때도 유용하다.

 


핵심 개념

이미지 ( Image )

  • 컨테이너 실행을 위한 템플릿
  • 애플리케이션과 필요한 실행 환경(운영체제, 라이브러리, 설정 등)을 포함한 불변(Immutable) 파일 시스템
  • 여러 개의 컨테이너를 동일한 이미지로부터 생성 가능
  • 도커 허브 ( Docker Hub)에서 다양한 공식 이미지를 받아와 사용이 가능하다
docker pull nginx  # nginx 이미지를 다운로드

 

컨테이너( Container )

  • 이미지를 실행한 독립된 실행 환경 
  • 컨테이너 내부는 이미지와 동일하지만, 상태 변경이 가능 
  • 프로세스 기반으로 실행되며, 필요할 때마다 빠르게 생성 및 삭제 가능
docker run -d --name my-nginx -p 8080:80 nginx
더보기
더보기
더보기

-d : 백그라운드에서 실행
--name my-nginx : 컨테이너 이름을 지정
-p 8080:80 : 호스트(8080) → 컨테이너(80) 포트 매핑

 

도커 허브(Docker Hub)

  • 도커 이미지 저장소 ( Github처럼 도커 이미지를 공유하는 서비스)
  • 공식 이미지 및 사용자 정의 이미지 업로드 가능
docker login          # 도커 허브 로그인
docker tag my-app mydockerhub/my-app:v1  # 태그 설정
docker push mydockerhub/my-app:v1        # 도커 허브에 푸시

 

Dockerfile

  • 도커 이미지를 생성하기 위한 설정 파일 
  • 컨테이너를 실행하기 위한 환경을 정의 (OS, 패키지 설치, 실행 명령어 등)
# 베이스 이미지 설정
FROM ubuntu:latest

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

# 기본 실행 명령어 설정
CMD ["echo", "Hello, Docker!"]
더보기
더보기
더보기

FROM : 기본 이미지 지정
RUN : 컨테이너 빌드 시 실행할 명령어
CMD : 컨테이너가 실행될 때 수행할 기본 명령어

  • 빌드 및 실행
더보기
더보기
더보기

docker build -t my-custom-image .

docker run my-custom-image

 


 

🛠 도커 주요 명령어 정리

도커 기본 명령어

docker --version  # 도커 버전 확인
docker info       # 도커 시스템 정보 확인
docker help       # 사용 가능한 도커 명렁어 목록 출력
docker <명령어> --help # 특정 명령어에 대한 도움말 출력

 

도커 이미지 ( Image ) 관련 명령어

docker images            # 로컬에 저장된 이미지 목록 확인
docker pull <이미지명>    # dockeHub에서 이미지 다운로드
docker search <이미지명>  # dockerHub에서 이미지 검색 
docker rmi <이미지ID>     # 특정 이미지 삭제
docker rmi $(docker images -q) # 모든 이미지 삭제
docker tag <이미지ID> <저장소명:태그> # 이미지에 태그 추가

 

컨테이너 ( Container ) 실행 및 관리

docker run <이미지명>				# 새로운 컨테이너 실행
docker run -d <이미지명>			# 백그라운드 실행
docker run -it <이미지명> bash 		# 컨테이너 내부에서 터미널 실행
docker run --rm <이미지명>			# 컨테이너 종류 자동 삭제
docker run -p 8080:80 <이미지명>	# 포트 매핑하여 실행 ( 호스트:컨테이너 )
docker run --name <이름> <이미지명> # 특정 이름으로 컨테이너 실행
docker run -v /mydata:/data <이미지명> # 볼륨 연결하여 실행

 

예시 )

# 8080 호스트의 80 포트에 my-nginx 라는 이름으로 nginx 이미지를 백그라운드로 실행
docker run -d -p 8080:80 --name my-nginx nginx 

# ubuntu 컨테이너에서 터미널 실행
docker run -it ubuntu bash

 

실행중인 컨테이너 관리

docker ps                     # 현재 실행 중인 컨테이너 목록 조회
docker ps -a                  # 모든 컨테이너 목록 조회
docker stop <컨테이너ID>      # 컨테이너 중지
docker start <컨테이너ID>     # 중지된 컨테이너 시작
docker restart <컨테이너ID>   # 컨테이너 재시작
docker rm <컨테이너ID>        # 컨테이너 삭제
docker rm $(docker ps -aq)    # 모든 컨테이너 삭제

 

예시 )

docker stop my-nginx  # my-nginx 컨테이너 중지
docker rm my-nginx    # my-nginx 컨테이너 삭제

 

컨테이너 내부 접근

docker exec -it <컨테이너ID> bash  # 컨테이너 내부 접속 (Linux)
docker exec -it <컨테이너ID> sh    # Alpine Linux 환경 접근
docker attach <컨테이너ID>         # 실행 중인 컨테이너에 연결
docker cp <컨테이너ID>:<경로> <호스트경로>  # 컨테이너 내부 파일 복사

 

예시 )

docker exec -it my-container bash  # my-container 내부 접근
docker cp my-container:/app/data.txt ./  # 컨테이너에서 파일 가져오기

 

컨테이너 상태 및 로그 확인

docker logs <컨테이너ID>        # 컨테이너 로그 확인
docker logs -f <컨테이너ID>     # 실시간 로그 출력
docker inspect <컨테이너ID>     # 컨테이너 상세 정보 확인
docker stats                   # 실행 중인 컨테이너의 리소스 사용량 확인
docker top <컨테이너ID>        # 컨테이너 내 실행 중인 프로세스 확인
docker diff <컨테이너ID>       # 컨테이너 내부 변경 사항 확인

 

예시 )

docker logs my-container  # 특정 컨테이너 로그 출력
docker stats              # 모든 컨테이너의 CPU, 메모리 사용량 확인

 

도커 네트워크 관리

docker network ls                           # 네트워크 목록 확인
docker network create <네트워크명>           # 사용자 정의 네트워크 생성
docker network inspect <네트워크명>          # 네트워크 상세 정보 확인
docker network connect <네트워크명> <컨테이너명>  # 컨테이너를 네트워크에 추가
docker network disconnect <네트워크명> <컨테이너명>  # 네트워크 연결 해제
docker network rm <네트워크명>               # 네트워크 삭제

 

예시 )

docker network create my-net  # 사용자 네트워크 생성
docker network connect my-net my-container  # 컨테이너 네트워크 연결

 

도커 볼륨 관리 ( 데이터 영구 저장 ) 

docker volume ls               # 볼륨 목록 확인
docker volume create my-vol    # 볼륨 생성
docker volume inspect my-vol   # 특정 볼륨 정보 확인
docker volume rm my-vol        # 특정 볼륨 삭제
docker run -v my-vol:/data ubuntu  # 볼륨을 컨테이너에 마운트하여 실행

 

예시 )

docker volume create data-vol  # 볼륨 생성
docker run -v data-vol:/app ubuntu  # 컨테이너에서 볼륨 사용

 

Dockerfil을 사용한 이미지 빌드

docker build -t <이미지명> .  # 현재 디렉토리의 Dockerfile을 기반으로 이미지 빌드
docker build -t my-app:v1 .   # 특정 태그를 포함하여 빌드
docker history <이미지명>      # 이미지 생성 내역 확인

 

예시 )

도커파일

# Ubuntu 기반 이미지
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
CMD ["echo", "Hello, Docker!"]

 

docker 명령어

docker build -t my-ubuntu .
docker run my-ubuntu

 

Docker Compose ( 여러 컨테이너 실행 )

docker-compose up -d    # 모든 서비스 실행 (백그라운드)
docker-compose down     # 모든 서비스 중지 및 컨테이너 삭제
docker-compose logs     # 서비스 로그 출력
docker-compose ps       # 실행 중인 컨테이너 확인

 

예시 ) 

docker-compose.yml

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

 

docker 명령어

docker-compose up -d  # 웹 + DB 컨테이너 실행
docker-compose down   # 컨테이너 정리

 

 

 

 

자주 사용할 것 같은 명령어들을 간단하게 정리해보았다.

실제로 사용해본적이 별로 없어서 간단한 예제로 실습하면서 익혀봐야겠다.

'DevOps' 카테고리의 다른 글

25.03.31 Spring Boot Acturator , Prometheus, Grafana  (0) 2025.03.31
25.03.30 모니터링 시스템  (0) 2025.03.30
Github Actions 와 CI/CD 란?  (0) 2025.03.04
25.03.03 GitHub Actions(CI / CD)와 Docker로 AWS에 자동 배포하기 (2)  (0) 2025.03.03
25.02.28 GitHub Actions(CI / CD)와 Docker로 AWS에 자동 배포하기 (1)  (0) 2025.02.28
  1. 개요
  2. 🐳 도커 ( Docker )
  3. 핵심 개념
  4. 🛠 도커 주요 명령어 정리
'DevOps' 카테고리의 다른 글
  • 25.03.30 모니터링 시스템
  • Github Actions 와 CI/CD 란?
  • 25.03.03 GitHub Actions(CI / CD)와 Docker로 AWS에 자동 배포하기 (2)
  • 25.02.28 GitHub Actions(CI / CD)와 Docker로 AWS에 자동 배포하기 (1)
ddong-kka
ddong-kka
https://github.com/jjsh0208
  • ddong-kka
    개발노트
    ddong-kka
  • 전체
    오늘
    어제
    • 분류 전체보기 (59)
      • BackEnd (7)
      • Java (2)
      • Spring Boot (9)
      • DevOps (7)
      • MSA (3)
      • DataBase (3)
      • Algorithm (20)
      • TroubleShooting (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DevOps
    테스트 코드
    springboot
    JPA
    CI/CD
    trouble shooting
    Github Actions
    Kafka
    algoritm
    객체지향원칙
    Redis
    유효성 검사
    프로그래머스
    aop
    spring boot
    Intellij
    docker
    어노테이션
    Java
    testcode
    algorithm
    tosspayment api
    elasticsearch
    JWT
    Til
    EC2
    멀티 모듈
    querydls
    rabbitmq
    MSA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
ddong-kka
25.02.27 도커와 주요 명령어

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.