[Docker 강의 4편] 도커 네트워크와 볼륨 관리

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

 

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

 

이번 포스팅에서는 도커의 네트워크와 볼륨을 다루는 방법을 알아보겠습니다.

도커 네트워크는 컨테이너 간의 통신을 가능하게 하고,

볼륨은 컨테이너에서 생성한 데이터를 영구적으로 저장할 수 있게 해줍니다.


1. 도커 네트워크 이해하기

도커에서는 컨테이너 간의 통신을 네트워크를 통해 처리합니다. 도커 네트워크는 격리된 환경에서 애플리케이션들이 안전하게 통신할 수 있도록 해줍니다. 기본적으로 도커는 Bridge, Host, None 세 가지 네트워크 모드를 제공합니다.

1-1. 네트워크 목록 확인

현재 사용 가능한 도커 네트워크를 확인하려면 다음 명령어를 사용합니다.

docker network ls
 

1-2. Bridge 네트워크

Bridge 네트워크는 기본 네트워크 모드로, 동일한 네트워크 내에서 컨테이너들이 서로 통신할 수 있습니다. Bridge 네트워크에 속한 컨테이너들은 내부적으로 통신이 가능하고, 외부와도 연결할 수 있습니다.

1-3. 네트워크 생성 및 사용

컨테이너들을 서로 연결하는 네트워크를 직접 생성할 수 있습니다.

docker network create my_bridge
 

이렇게 생성한 네트워크에 컨테이너를 연결하려면 --network 옵션을 사용합니다.

docker run -d --network my_bridge --name web nginx 
docker run -d --network my_bridge --name db mysql
 
  • --network my_bridge : 새로 생성한 네트워크에 컨테이너를 연결합니다.

이제 web 컨테이너는 db 컨테이너와 통신할 수 있습니다.

1-4. 네트워크 연결된 컨테이너 간 통신

네트워크에 연결된 컨테이너들 간의 통신은 컨테이너 이름을 사용하여 가능합니다. 예를 들어, web 컨테이너에서 db 컨테이너로 연결하려면 MySQL 클라이언트로 다음과 같이 접속할 수 있습니다.

mysql -h db -u root -p
 

여기서 db는 mysql 컨테이너의 이름입니다.


2. 도커 볼륨 이해하기

도커 볼륨은 컨테이너가 종료되거나 삭제되더라도 데이터를 영구적으로 저장할 수 있는 방법입니다. 이는 특히 데이터베이스나 로그 파일을 저장하는 데 유용합니다.

2-1. 볼륨 생성

도커 볼륨을 생성하려면 아래 명령어를 사용합니다.

docker volume create my_volume
 

2-2. 볼륨을 컨테이너에 마운트

볼륨을 컨테이너에 연결하려면 -v 옵션을 사용합니다.

docker run -d -v my_volume:/data --name db mysql
 
  • my_volume:/data : 호스트의 my_volume이라는 볼륨을 컨테이너의 /data 디렉토리에 마운트합니다.

2-3. 볼륨이 잘 연결되었는지 확인

docker inspect db
 

위 명령어로 컨테이너를 확인하여 볼륨이 잘 마운트되었는지 확인할 수 있습니다.

2-4. 볼륨 목록 확인 및 삭제

생성된 모든 볼륨 목록을 확인하려면 다음 명령어를 사용합니다.

docker volume ls
 

특정 볼륨을 삭제하려면 아래 명령어를 사용합니다.

docker volume rm my_volume
 

 


3. 도커 네트워크와 볼륨의 활용

네트워크와 볼륨을 결합하여 애플리케이션을 실행할 수 있습니다. 예를 들어, 웹 서버와 데이터베이스 서버를 서로 다른 컨테이너에서 실행하면서 데이터를 영구적으로 저장하려면 다음과 같이 설정할 수 있습니다.

# 네트워크 생성 
docker network create my_network 

# MySQL 컨테이너 실행 (볼륨 사용) 
docker run -d --name db --network my_network -v my_dbdata:/var/lib/mysql mysql 

# Nginx 웹 서버 실행 
docker run -d --name web --network my_network -p 8080:80 nginx
 
  • my_dbdata라는 볼륨을 사용하여 MySQL 데이터를 영구적으로 저장하고, my_network라는 네트워크에서 두 컨테이너가 통신하도록 설정했습니다.

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

도커와 리눅스 명령어를 결합하면 더욱 효율적으로 작업할 수 있습니다.

4-1. 볼륨 백업 및 복원

리눅스 명령어를 사용하여 도커 볼륨의 데이터를 백업하고 복원할 수 있습니다.

볼륨 백업

docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz /data
 
  • my_volume:/data : 볼륨을 컨테이너에 마운트.
  • $(pwd):/backup : 현재 디렉토리를 백업 디렉토리로 마운트.
  • tar czf : 볼륨의 데이터를 압축하여 백업.

볼륨 복원

docker run --rm -v my_volume:/data -v $(pwd):/backup ubuntu tar xzf /backup/backup.tar.gz -C /data
 

4-2. 네트워크 상태 확인

docker network inspect 명령어와 리눅스 명령어를 결합하여 네트워크 상태를 분석할 수 있습니다.

docker network inspect my_bridge | grep "Containers"
 
  • 네트워크 내 컨테이너 정보를 필터링하여 확인할 수 있습니다.

공식 문서 참조

  • 도커 네트워크 공식 문서
  • 도커 볼륨 공식 문서

예시 코드

네트워크 생성 및 컨테이너 연결

docker network create my_bridge
docker run -d --network my_bridge --name web nginx
docker run -d --network my_bridge --name db mysql

볼륨 생성 및 마운트

docker volume create my_volume
docker run -d -v my_volume:/data --name db mysql

네트워크 및 볼륨 상태 확인

docker network ls
docker volume ls

 


과제

  1. 네트워크를 사용하여 두 개의 컨테이너가 서로 통신할 수 있도록 설정해보세요. MySQL 데이터베이스와 Nginx 웹 서버를 서로 다른 컨테이너에서 실행하고, MySQL에 웹 서버에서 접근할 수 있도록 설정하세요.
  2. 볼륨을 사용하여 MySQL 데이터베이스의 데이터를 영구적으로 저장하세요. 데이터를 저장하고 다시 컨테이너를 삭제한 후, 데이터를 복원해보세요.
  3. 리눅스 명령어와 도커를 결합하여, 컨테이너의 로그를 특정 키워드로 필터링하고, 컨테이너 간 네트워크 상태를 분석하는 스크립트를 작성해보세요.

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

다음 포스팅에서는 도커 이미지 최적화 및 효율적으로 관리하는 방법에 대해 다뤄보겠습니다!

반응형

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

[Docker 강의 6편] 도커 파일 작성하기 (Dockerfile)  (0) 2024.09.19
[Docker 강의 5편] 도커 이미지 최적화 및 관리  (0) 2024.09.17
[Docker 강의 3편] 도커 기본 명령어 사용법  (0) 2024.09.15
[Docker 강의 2편] 도커 설치 및 기본 설정  (0) 2024.09.13
[Docker 강의 1편] 도커란 무엇인가  (0) 2024.09.12
'Docker/Docker 강의' 카테고리의 다른 글
  • [Docker 강의 6편] 도커 파일 작성하기 (Dockerfile)
  • [Docker 강의 5편] 도커 이미지 최적화 및 관리
  • [Docker 강의 3편] 도커 기본 명령어 사용법
  • [Docker 강의 2편] 도커 설치 및 기본 설정
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 강의 4편] 도커 네트워크와 볼륨 관리
상단으로

티스토리툴바