작성
·
876
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
안녕하세요! 도커 컴포즈의 볼륨에 대해 궁금하시군요~
먼저, 아래처럼 설정하면 데이터를 저장할 db_data
라는 볼륨이 만들어진다는 사실은 이해하신 듯 합니다.
volumes:
db_data: {}
호스트에는 도커가 볼륨을 관리하는 특정한 위치가 있는데요. 도커 컴포즈의 볼륨 역시 이 위치에 저장됩니다.
docker volume ls
명령을 사용하시면 도커 볼륨 목록을 보실 수 있고요.
특정 볼륨의 자세한 정보가 궁금하시다면 docker volume inspect {volume_name}
명령을 사용하시면 됩니다.
아마 지금쯤 이해하셨겠지만, 아래처럼 설정하면 호스트의 db_data
볼륨과 컨테이너의 /var/lib/mysql/
이 서로 연결됩니다.
services:
db:
volumes:
- db_data:/var/lib/mysql
질문1의 volumes
섹션에서 도커 볼륨을 '선언(생성)'했고, db
서비스 아래의 volumes
에서는 도커 볼륨을 '사용'한 것으로 이해하시면 되겠습니다.
정확하게는 원인을 모르겠네요. 아래처럼 작성하셨다면, 이 부분만 남겨두고 나머지는 모두 지운 후 docker-compose up
을 해보면 어떨까요? 잘 실행된다면 다른 부분이 잘못됐음을 확인할 수 있겠습니다.
volumes:
db_data: {}
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql