이것은 나에게 매우 혼란스러운 질문이다. 리소스 오버헤드가 발생하는 자체 데이터베이스가 있는 컨테이너가 여러 개 있습니다.
mariadb 컨테이너를 배포했고 다른 컨테이너에서 이를 사용하고 싶지만 항상 문제가 발생하는 것 같아서 알 수 없습니다.
다음은 몇 가지 참고 사항입니다.
- mariadb를 배포할 때 다른 서비스와 동일한 Docker 네트워크에 있도록 구성했습니다.
- mariadb를 배포할 때 바인드 볼륨 /a/path:/config를 사용했지만 해당 경로에서 config라는 폴더를 찾을 수 없으며 log/, 데이터베이스/ 및 custom.cnf만 찾을 수 있습니다. /config 디렉토리를 직접 생성합니까, 아니면 데이터베이스와 동일하게 생성합니까?
- /databases에는 /maria_db 및 /mysql이 포함되어 있습니다. 데이터베이스는 어디에 저장되어 있나요?노트데이터베이스 환경 변수 maria_db를 호출했습니다. 그래서 여기에 데이터베이스가 저장되어 있나요?
- /databases/mysql/ 및 /databases/maria_db/ 디렉터리에는 모두 데이터베이스처럼 보이는 파일(예: .frm , .ibd )이 있지만 /mysql에는 /maria_db에서 찾을 수 없는 파일 확장자가 더 많습니다(예: . MAD, .MAI), 이는 혼란스럽습니다(다음 참고 참조).
- 다른 컨테이너가 이 데이터베이스를 사용하도록 해야 하는 경우 데이터베이스를 호출하는 환경 변수(예: MYSQL_DATABASE=maria_db)를 만들어야 합니까, 아니면 다른 Docker에게 데이터베이스 디렉터리에 대한 액세스 권한을 부여해야 합니까? 만일이 경우라면,어느 것?, /mariadb , /mysql 또는 상위 폴더 /databases 에 둘 다 포함되어 있습니까?
- 각 도커에 대해 다른 데이터베이스 사용자 이름과 비밀번호(MYSQL_USER, MYSQL_PASSWORD)를 제공하고 싶습니다. 이것이 좋은 생각입니까? (내가 아는 한, 첫 번째 사용자 이름과 비밀번호를 제외하고는 변수를 통해 전달하는 대신 콘솔을 통해 데이터베이스에 추가해야 합니다.)
- 데이터베이스 디렉토리를 사용할 모든 도커에 마운트해야 한다면,어디그것을 사용할 docker에 설치해야 합니까?
질문이 많다는 건 알지만, 혼란스러운 주제이고 몇 시간을 읽어도 스스로 알아낼 수 없습니다(어제 혼자 12시간을 보냈습니다).
미리 감사드립니다.
답변1
데이터베이스 접근에 대해 약간의 오해가 있는 것 같습니다. 데이터베이스 자체 이외의 어떤 응용 프로그램도 원본 데이터베이스 파일을 수정해서는 안 되며, 다른 모든 응용 프로그램도 수정해야 합니다.상호 작용데이터베이스를 사용하여 정보에 액세스하거나 정보를 수정합니다.
2: 도커 이미지인 대부분의 데이터베이스는 환경 변수를 통해 구성 변수를 전달하는 규칙을 따릅니다. 여기를 참고하세요:https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/
당신이 시도할 때바인드 마운트 /a/path:/config
/a/path
/config
, 로컬 시스템의 마운트를 Docker 컨테이너 에 바인딩하려고 합니다 . 내가 아는 한, 이 디렉터리는 MariaDB 도커에 존재하지 않습니다.
3: 데이터베이스는 어디에 있나요?데이터 파일예약하다? ~에 따르면마리아 데이터베이스, 기본 위치는 입니다 /var/lib/mysql
.
5: #2에서 언급한 대로 환경 변수로 전달할 수 있습니다. "좋은 아이디어"가 무엇을 의미하는지 이해하지 못하지만 확실히 가능하고 표준입니다.
7: 앞서 언급했듯이 그렇게 하면 안 됩니다.