Windows Docker에서 Volume이 안되는 현상 해결(windows docker volume not work)

이동기·2023년 4월 2일
1
post-thumbnail

문제발견

Docker를 이용해서 DB를 이용하고자할때 Volume지정을 따로 하지 않고 올리면 기존에 사용하던 DB를 가져오지 못하는 경우가 발생 할 수 있다.

Volume이란 간단하게 말해서 Host와 컨테이너 간에 실시간 디렉토리 연동이라고 생각해도 된다.

그래서 보통 Volume을 이용하여 백업 해두고 compose 또는 run을 할때 지정한 Volume 경로를 이용하여 기존의 백업된 DB를 읽어와 실행하는경우가 많을 것이다.

그러나 막상 Windows Docker를 이용하여 ubuntu나 centOS에서 하던 것 처럼 Volume 지정을 하면 제대로 인식하지 못하는 경우가 많다.


원인

원인은 따로 찾지 못했다 해외에서도 여러 글이 있었지만 대충 읽어보면 Windows Docker에서는 linux 기반 경로를 제대로 읽지 못하는거 같다.

https://forums.docker.com/t/volume-mounts-in-windows-does-not-work/10693 참고


해결

잡설명 집어치우고 간단히 말하자면 docker compose 기능에서 해답을 찾았다.
Volume을 지정할때 경로 부분은 더블쿼터로 묶어주면 된다. run명령어로는 테스트를 하지 않았는데 run명령어에서 -v 옵션을 더블쿼터로 묶어주면 되지않을까 싶다.


참고

아래는 docker compose를 이용한 mariadb와 mongodb를 올린 예시이다. volumes: 항목을 적을때 ""를 써서 묶어주면 된다.

docker-compose.yml

version: '3.1'

services:
  mariadb:
    container_name: mariadb-container
    image: mariadb:latest
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: root
    ports:
      - 13306:3306
    volumes:
      - "/d/docker/database/mariadb/data:/var/lib/mysql"
  mongodb:
    container_name: mongodb-container
    image: mongo:latest
    restart: always
    ports:
      - 27017:27017
    volumes:
      - "/d/docker/database/mongodb/data:/data/db"

mariaDB, mongoDB가 정상적인 volume 상태를 가질때의 모습이다.

profile
개발자가 되고 싶은 '개'발자입니다.

0개의 댓글