본문 바로가기
IT

[docker] volume

by 내일은교양왕 2024. 6. 4.

배경

docker conainter에 쓰여진 데이터는 기본적으로 삭제됨

데이터를 유지하려면 기본적으로 2가지 방법이 있음

  • volume
  • bind mount

 

Volume 생성

➜  ~ docker volume create mongo-vol
mongo-vol

➜  ~ docker volume ls
DRIVER    VOLUME NAME
local     mongo-vol

 

Volume 상세정보

➜  ~ docker volume inspect mongo-vol
[
    {
        "CreatedAt": "2024-06-04T05:51:38Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mongo-vol/_data",
        "Name": "mongo-vol",
        "Options": null,
        "Scope": "local"
    }
]

 

 

Volume 엮어서 컨테이너 실행

-v {volume_name}:{container_copy_path}

 

실습

mongo db 데이터 파일

docker run -v mongo-vol:/data/db --name docker-compose-study-mongodb-1

 

 

Volume 청소

마운트외어 있지 않는 모든 볼륨을 한번에 제거

docker volume prune

 

 

docker-compose 에서 Volume 사용하기

version: '3.1'
services:
    my-app:
      build: .
      ports:
        - 3000:3000
      environment:
        MONGO_DB_USERNAME: admin
        MONGO_DB_PWD: supersecret


    mongodb:
      image: mongo
      ports:
        - 27017:27017
      environment:
        MONGO_INITDB_ROOT_USERNAME: admin
        MONGO_INITDB_ROOT_PASSWORD: supersecret
      volumes:
        - mongo-data:/data/db

    mongo-express:
      image: mongo-express
      ports:
        - 8081:8081
      environment:
        ME_CONFIG_MONGODB_ADMINUSERNAME: admin
        ME_CONFIG_MONGODB_ADMINPASSWORD: supersecret
        ME_CONFIG_MONGODB_SERVER: mongodb
      depends_on:
        - "mongodb"

volumes:
  mongo-data:
    driver: local