• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

volumes db_data 문의2

22.04.07 11:48 작성 조회수 484

0

docker_compose.yml 

1.

db:
volumes:
- db_data:/var/lib/mysql

2.
volumes:
db_data: {}

 

질문1.
2의 db_data는 어디에 생성되는 것인가요?
host 시스템의 /db_data 인가요?

질문2.
host의 db_data를 컨테이너의 /var/lib/mysql과 마운트하는 것이니
docker_compose.yml에 아래에 volumes: 으로 별도로 볼륨을 생성하면 볼륨의 경로가 어디가 되는 것인가요?


질문3.

아래 볼륨을 작성하였을 때 오류가 발생합니다.
volumes:
db_data: {}


[오류메시지]
services.volumes additional property is not allowed
services.db.volumes.0 type is required









답변 1

답변을 작성해보세요.

0

안녕하세요! 도커 컴포즈의 볼륨에 대해 궁금하시군요~

 

질문1에 대한 답변:

먼저, 아래처럼 설정하면 데이터를 저장할 db_data라는 볼륨이 만들어진다는 사실은 이해하신 듯 합니다.

volumes:
db_data: {}

호스트에는 도커가 볼륨을 관리하는 특정한 위치가 있는데요. 도커 컴포즈의 볼륨 역시 이 위치에 저장됩니다.

docker volume ls 명령을 사용하시면 도커 볼륨 목록을 보실 수 있고요.

특정 볼륨의 자세한 정보가 궁금하시다면 docker volume inspect {volume_name} 명령을 사용하시면 됩니다.

 

질문 2에 대한 답변:

아마 지금쯤 이해하셨겠지만, 아래처럼 설정하면 호스트의 db_data 볼륨과 컨테이너의 /var/lib/mysql/이 서로 연결됩니다.

services:
db:
volumes:
- db_data:/var/lib/mysql

질문1의 volumes 섹션에서 도커 볼륨을 '선언(생성)'했고, db 서비스 아래의 volumes에서는 도커 볼륨을 '사용'한 것으로 이해하시면 되겠습니다.

 

질문 3에 대한 답변:

정확하게는 원인을 모르겠네요. 아래처럼 작성하셨다면, 이 부분만 남겨두고 나머지는 모두 지운 후 docker-compose up을 해보면 어떨까요? 잘 실행된다면 다른 부분이 잘못됐음을 확인할 수 있겠습니다.

volumes:
db_data: {}

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql