[Docker] Docker Volume / Network / Image / Container 가상화

왕감자·2025년 3월 3일

2025 내일배움캠프

목록 보기
12/39

Docker Volume

컴퓨터에 따로 생성된 폴더, Docker가 관리하며 데이터를 저장하는 곳
/var/lib/docker/volumes/

  • 백업, 이동 용이
  • Docker 명령어로 관리
  • 리눅스, 윈도우 등 다양한 플랫폼에서 호환
  • 데이터 안전 공유
  • 외부 스토리지에 저장하거나 보안을 강화할 수 있는 추가 기능 제공 (볼륨 드라이버)
  • 컨테이너가 삭제되어도 데이터는 남아있어 지속적으로 사용 가능
  • Mac이나 Window에서 기본 저장 방식보다 빠르게 작동

💡 Docker는 Volume을 가장 권장



Docker Network

Docker Container 간 통신을 돕는 네트워크

  • 컨테이너 간 원활한 통신 가능, 보안성 높일 수 있음

CNM : 네트워크를 쉽고 효율적으로 구축할 수 있는 네트워크 모델

  • 샌드박스 : 컨테이너를 외부 네트워크로부터 분리하는 역할
  • 엔드포인트 : 샌드박스를 외부 네트워크와 연결하는 지점
  • 네트워크 : 컨테이너 간 데이터 전송 경로, 여러 네트워크에 컨테이너를 동시에 연결할 수 있음


Docker Image

Docker hub repositories에 image push

  • Registry : 이미지 저장 공간, Dockerfile이나 docker commit을 통해 생성한 이미지 보관
    • Pulbic
    • Private
    • Docker Hub : 자신의 계정 레지스트리에 이미지를 저장하려면 이미지명 앞에 자신의 계정명 추가
docker logout
docker login

docker image pull nginx:latest

docker images

docker image tag nginx:latest 유저네임/nginx-test:1.0

# 사용자 계정 레지스트리에 푸시
docker push 유저네임/nginx-test:1.0

docker images
docker image rm 유저네임/nginx-test:1.0
docker container rm nginx-test --force
docker image rm nginx-test:1.0 --force

docker pull 유저네임/nginx-test:1.0
docker run -d -p 8001:80 --name=nginx-test 유저네임/nginx-test:1.0


Docker Container 가상화

Container

앱을 실행하는 데 필요한 모든 걸 담은 작은 상자
(앱을 돌리는 데 필요한 코드, 프로그래밍 언어, 라이브러리 같은 것들 포함)

  • 컴퓨터 자원(CPU, 메모리 등)을 여러 앱들과 나눠 쓸 수 있음
  • 앱을 컨테이너에 넣으면 컨테이너가 어디서 실행되든 똑같이 돌아감
  • 컨테이너는 독립적 - 컨테이너에 문제가 생겨도 다른 컨테이너에 영향x
  • OS를 여러 컨테이너가 공유해 각 컨테이너에 OS를 설치할 필요가 없으며 파일크기가 작고 빠르게 시작
  • 크기가 작고 다양한 플랫폼에 적합해, 새로운 코드 업데이트와 배포에 유리
  • 앱을 각각 따로 배치하거나 조절할 수 있기 때문에 전체 앱을 확장하는 것보다 더 유연하게 관리 가능

0개의 댓글