Docker/Docker 강의

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

2024. 9. 15. 08:00
목차
  1. 1. 도커 컨테이너 관련 명령어
  2. 1-1. 컨테이너 실행
  3. 1-2. 실행 중인 컨테이너 목록 확인
  4. 1-3. 모든 컨테이너 목록 확인 (실행 중, 중지된 컨테이너 포함)
  5. 1-4. 컨테이너 중지 및 삭제
  6. 1-5. 모든 컨테이너 중지 및 삭제
  7. 2. 도커 이미지 관련 명령어
  8. 2-1. 이미지 목록 확인
  9. 2-2. 이미지 삭제
  10. 2-3. 모든 이미지 삭제
  11. 3. 도커 자동화 명령어
  12. 3-1. Dockerfile을 사용한 이미지 빌드 자동화
  13. 3-2. docker-compose를 사용한 다중 컨테이너 관리
  14. 3-3. cron과 도커를 결합한 스케줄링
  15. 4. 리눅스 명령어와 도커 결합하기
  16. 4-1. 로그 관리
  17. 4-2. CPU 및 메모리 사용량 모니터링
  18. 4-3. Dockerfile에서 리눅스 명령어 사용
  19. 공식 문서 참조
  20. 예시 코드
  21. 컨테이너 중지 및 삭제
  22. 이미지 삭제
  23. Dockerfile로 이미지 빌드
  24. docker-compose로 여러 컨테이너 실행
  25. 도커 로그에서 오류 메시지만 필터링
  26. 과제
  27. 이전 강의 보기
728x90
반응형

 

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

 

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

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

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

 


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

 

 

728x90
반응형

'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
  1. 1. 도커 컨테이너 관련 명령어
  2. 1-1. 컨테이너 실행
  3. 1-2. 실행 중인 컨테이너 목록 확인
  4. 1-3. 모든 컨테이너 목록 확인 (실행 중, 중지된 컨테이너 포함)
  5. 1-4. 컨테이너 중지 및 삭제
  6. 1-5. 모든 컨테이너 중지 및 삭제
  7. 2. 도커 이미지 관련 명령어
  8. 2-1. 이미지 목록 확인
  9. 2-2. 이미지 삭제
  10. 2-3. 모든 이미지 삭제
  11. 3. 도커 자동화 명령어
  12. 3-1. Dockerfile을 사용한 이미지 빌드 자동화
  13. 3-2. docker-compose를 사용한 다중 컨테이너 관리
  14. 3-3. cron과 도커를 결합한 스케줄링
  15. 4. 리눅스 명령어와 도커 결합하기
  16. 4-1. 로그 관리
  17. 4-2. CPU 및 메모리 사용량 모니터링
  18. 4-3. Dockerfile에서 리눅스 명령어 사용
  19. 공식 문서 참조
  20. 예시 코드
  21. 컨테이너 중지 및 삭제
  22. 이미지 삭제
  23. Dockerfile로 이미지 빌드
  24. docker-compose로 여러 컨테이너 실행
  25. 도커 로그에서 오류 메시지만 필터링
  26. 과제
  27. 이전 강의 보기
Dev.Poinguinie
Dev.Poinguinie
게임, 코딩 블로그 입니다. 여러 일상적인 글도 올려요! 많이 봐주세요! 감사합니다.
250x250
Dev.Poinguinie
펭귄교수
Dev.Poinguinie
  • 분류 전체보기
    • 새티스팩토리
      • 정보
      • 모드
      • 리뷰
    • 펠월드
      • 정보
      • 패치노트
    • 게임
      • 스팀 세일
      • 테라리아
      • 디펜서바이버
    • App
      • Kotlin
      • Flutter
    • Front Ent
      • 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 리뷰

공지사항

  • 티스토리 스킨 변경
  • 파이썬 코딩 강의 공지사항

태그

  • 내일 운세
  • 새티스팩토리
  • MOD
  • Satisfactory
  • 오블완
  • 티스토리챌린지
  • 내일 날씨
  • 모드
  • 모드 추천
  • satis factory
  • 파이썬
  • 새티스 팩토리

최근 글

250x250
hELLO · Designed By 정상우.
Dev.Poinguinie
[Docker 강의 3편] 도커 기본 명령어 사용법
홈 상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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