[Docker 강의 3편] 도커 기본 명령어 사용법

2024. 9. 15. 08:00·Docker/Docker 강의
반응형

 

안녕하세요 펭귄 교수입니다.

 

이번 포스팅에서는 도커를 사용하는 데 필수적인 기본 명령어들을 다룹니다.

컨테이너 실행, 관리, 삭제 및 이미지 관리를 포함하여 자주 사용하는 명령어를 소개합니다.

또한 리눅스 명령어와 결합하여 도커를 더욱 효과적으로 사용하는 방법도 살펴봅니다.

 


1. 도커 컨테이너 관련 명령어

도커의 핵심은 컨테이너입니다. 도커 컨테이너는 애플리케이션과 그 환경을 격리된 상태로 실행할 수 있게 해줍니다.

1-1. 컨테이너 실행

컨테이너를 실행하는 기본 명령어는 docker run입니다.

docker run -d -p 8080:80 nginx
 
  • -d : 컨테이너를 백그라운드에서 실행합니다.
  • -p 8080:80 : 호스트의 8080 포트를 컨테이너의 80 포트에 매핑합니다.
  • nginx : 실행할 이미지입니다. nginx 웹 서버를 컨테이너로 실행합니다.

1-2. 실행 중인 컨테이너 목록 확인

현재 실행 중인 컨테이너를 확인하려면 docker ps 명령어를 사용합니다.

docker ps
 
  • 컨테이너 ID, 이미지 이름, 실행 상태 등을 확인할 수 있습니다.

1-3. 모든 컨테이너 목록 확인 (실행 중, 중지된 컨테이너 포함)

실행 중이지 않은 컨테이너도 포함하여 모든 컨테이너를 보고 싶다면 -a 옵션을 사용합니다.

docker ps -a
 

1-4. 컨테이너 중지 및 삭제

특정 컨테이너를 중지하려면 docker stop 명령어를 사용합니다.

docker stop [컨테이너 ID 또는 이름]
 

중지된 컨테이너를 삭제하려면 docker rm 명령어를 사용합니다.

docker rm [컨테이너 ID 또는 이름]
 

 

그래서 저같은 경우는 해당 명령어를 한번에 처리하기 위해 다음과 같이 사용합니다.

docker stop [컨테이너 ID 또는 이름] && docker rm [컨테이너 ID 또는 이름]

 

&& 는 리눅스 커맨드에서 이전 명령어를 모두 작업 후 다음 작업으로 넘어갈 때 사용합니다.

 

1-5. 모든 컨테이너 중지 및 삭제

한 번에 모든 컨테이너를 중지하려면 docker stop에 $(docker ps -q)를 결합하여 사용합니다.

docker stop $(docker ps -q)
 

모든 컨테이너를 삭제하는 방법은 아래와 같습니다.

docker rm $(docker ps -a -q)
 

 


2. 도커 이미지 관련 명령어

도커 이미지는 컨테이너를 실행하기 위한 애플리케이션과 환경이 포함된 템플릿입니다.

2-1. 이미지 목록 확인

현재 다운로드된 모든 도커 이미지를 확인하려면 docker images 명령어를 사용합니다.

docker images
 

2-2. 이미지 삭제

특정 이미지를 삭제하려면 docker rmi 명령어를 사용합니다.

docker rmi [이미지 ID 또는 이름]
 

2-3. 모든 이미지 삭제

모든 이미지를 삭제하려면 아래 명령어를 사용합니다.

docker rmi $(docker images -q)
 

 

위 컨테이너 종료 및 삭제 후 이미지까지 전체 삭제를 한다면 다음과 같이 쉘 스크립트를 작성하면 자동화 할 수 있습니다.

 

#/bin/bash

docker stop $(docker ps -q) &&
docker rm $(docker ps -a -q) &&
docker rmi $(docker images -q)

3. 도커 자동화 명령어

도커는 명령어를 통해 작업을 자동화할 수 있습니다. 반복적인 작업을 스크립트화하여 작업 시간을 단축할 수 있습니다.

3-1. Dockerfile을 사용한 이미지 빌드 자동화

Dockerfile은 애플리케이션을 어떻게 빌드할지 정의한 파일입니다.

이를 통해 애플리케이션 빌드를 자동화할 수 있습니다.

 

자세한 내용은 6편 도커 파일 작성하기 (Dockerfile) 에서 소개해드리도록 하겠습니다.

# Dockerfile에서 이미지 빌드 
docker build -t myapp .
  • -t myapp : 이미지에 myapp이라는 태그를 붙입니다.
  • . : 현재 디렉터리에 있는 Dockerfile을 사용합니다.

3-2. docker-compose를 사용한 다중 컨테이너 관리

Docker Compose는 여러 컨테이너를 한 번에 관리할 수 있게 도와줍니다.

docker-compose.yml 파일을 통해 복잡한 애플리케이션 스택을 쉽게 정의하고 관리할 수 있습니다.

 

이 또한 자세한 내용은 11편 도커 Compose란? 에서 소개해드리도록 하겠습니다.

# docker-compose.yml 파일로 여러 컨테이너 실행 
docker-compose up -d
 
  • up -d : 백그라운드에서 정의된 모든 컨테이너를 실행합니다.

3-3. cron과 도커를 결합한 스케줄링

리눅스의 cron과 도커를 결합하여 주기적으로 작업을 수행할 수 있습니다. 예를 들어, 매일 자정에 컨테이너를 다시 시작하는 스크립트를 설정할 수 있습니다.

 

리눅스 cron 에 대한 설명은 추후 다른 글에서 소개드리도록 하겠습니다.

0 0 * * * docker restart my_container
 

위 명령어는 매일 자정에 my_container라는 컨테이너를 재시작합니다.


4. 리눅스 명령어와 도커 결합하기

도커와 리눅스 명령어를 결합하면 더욱 강력한 자동화 및 관리가 가능합니다.

4-1. 로그 관리

리눅스의 grep, tail 명령어를 사용해 도커 컨테이너의 로그를 필터링할 수 있습니다.

# 특정 컨테이너의 로그에서 오류 메시지만 필터링
docker logs my_container | grep "error"
 

4-2. CPU 및 메모리 사용량 모니터링

docker stats 명령어를 사용해 도커 컨테이너의 실시간 CPU 및 메모리 사용량을 모니터링할 수 있습니다.

docker stats
 

리눅스 명령어 top과 결합하면 컨테이너 외에도 전체 시스템의 리소스 사용을 동시에 모니터링할 수 있습니다.

top
 

4-3. Dockerfile에서 리눅스 명령어 사용

Dockerfile을 작성할 때 RUN 명령어를 사용하여 리눅스 명령어를 실행할 수 있습니다.

# 예시 Dockerfile
FROM ubuntu:latest

RUN apt-get update && apt-get install -y nginx
RUN echo "Hello, World!" > /var/www/html/index.html

CMD ["nginx", "-g", "daemon off;"]
 

위 Dockerfile은 Ubuntu 베이스 이미지에서 Nginx를 설치하고, 기본 페이지를 생성한 후 서버를 실행합니다.


공식 문서 참조

  • 도커 명령어 공식 문서
  • Docker Compose 공식 문서

예시 코드

컨테이너 중지 및 삭제

docker stop $(docker ps -q) 
docker rm $(docker ps -a -q)
 

이미지 삭제

docker rmi $(docker images -q)
 

Dockerfile로 이미지 빌드

docker build -t myapp .

 

 

docker-compose로 여러 컨테이너 실행

docker-compose up -d
 

도커 로그에서 오류 메시지만 필터링

docker logs my_container | grep "error"
 

과제

1. nginx 웹 서버를 도커로 실행하고, 로그에서 GET 요청만 필터링해보세요.

docker run -d -p 8080:80 nginx
docker logs [컨테이너 ID] | grep "GET"

 

2. Dockerfile을 사용해 간단한 웹 서버를 빌드해보세요. 기본 페이지에 "Hello, World!"를 출력하는 Nginx 서버를 설정하세요.

3. cron을 사용하여 매일 자정에 도커 컨테이너를 자동으로 다시 시작하도록 설정해보세요.

0 0 * * * docker restart [컨테이너 ID]

 


이번 포스팅을 통해 도커의 기본 명령어를 사용하는 방법과 이를 자동화하는 방법을 배웠습니다.

다음 포스팅에서는 도커 네트워크와 볼륨 관리에 대해 알아보겠습니다.

 


이전 강의 보기

 

 

[Docker 강의 1편] 도커란 무엇인가

안녕하세요 펭귄 교수입니다. 그렇게 시작하게 된 도커 강의, 1편도커란 무엇인가.포스팅 진행해보도록 하겠습니다.도커란 무엇인가?도커(Docker)는 애플리케이션을 컨테이너라는 가벼운 환경에

csexy-1365.tistory.com

 

 

반응형

'Docker > Docker 강의' 카테고리의 다른 글

[Docker 강의 5편] 도커 이미지 최적화 및 관리  (0) 2024.09.17
[Docker 강의 4편] 도커 네트워크와 볼륨 관리  (0) 2024.09.16
[Docker 강의 2편] 도커 설치 및 기본 설정  (0) 2024.09.13
[Docker 강의 1편] 도커란 무엇인가  (0) 2024.09.12
[Docker 강의 0편] 강의 커리큘럼  (0) 2024.09.12
'Docker/Docker 강의' 카테고리의 다른 글
  • [Docker 강의 5편] 도커 이미지 최적화 및 관리
  • [Docker 강의 4편] 도커 네트워크와 볼륨 관리
  • [Docker 강의 2편] 도커 설치 및 기본 설정
  • [Docker 강의 1편] 도커란 무엇인가
Dev.Poinguinie
Dev.Poinguinie
게임, 코딩 블로그 입니다. 여러 일상적인 글도 올려요! 많이 봐주세요! 감사합니다.
  • Dev.Poinguinie
    펭귄교수
    Dev.Poinguinie
    • 분류 전체보기
      • 새티스팩토리
        • 정보
        • 모드
        • 리뷰
      • 펠월드
        • 정보
        • 패치노트
      • 게임
        • 스팀 세일
        • 테라리아
        • 디펜서바이버
      • App
        • Kotlin
        • Flutter
      • Front End
        • HTML
        • JavaScript
        • React
      • Back End
        • Node.js
      • Docker
        • Docker 강의
        • Docker Project
      • 프로그래밍
        • AI
        • Chrome Extension
        • Markdown
        • Python
        • C++
        • Linux
        • Error
        • Tool
      • Computer Science
        • Algorithm
        • Network
      • 게임 프로그래밍
        • 유니티
      • 제작
        • 웹사이트
        • 기타 프로그램
      • 일상
        • 자작시
        • 노래 추천 및 정보
        • 블로그 운영
        • 내일의 모든 것
        • 오블완 챌린지
      • 리뷰
        • 식당 리뷰
        • IT 리뷰
  • 최근 글

  • 링크

    • 새티스 팩토리 모드
    • 깃허브 블로그
    • 깃허브 프로필
  • 공지사항

    • 티스토리 스킨 변경
    • 파이썬 코딩 강의 공지사항
  • hELLO· Designed By정상우.v4.10.3
Dev.Poinguinie
[Docker 강의 3편] 도커 기본 명령어 사용법
상단으로

티스토리툴바