OS X의 mariadb 도커 컨테이너: 데이터베이스 디렉토리를 작성할 수 없습니다.
OSX에서 mariadb에 문제가 있어 CentOS에서도 같은 방법으로 동작하고 있습니다.따라서 OSX의 문제여야 합니다.
mariadb:
image: mariadb:latest
container_name: mariadb
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: XXXXXXXX
volumes:
- /Users/sandro/Code/mysql:/var/lib/mysql
로그에 다음 오류가 있습니다.
mkdir: cannot create directory '/var/lib/mysql//mysql': Permission denied
Fatal error Can't create database directory '/var/lib/mysql//mysql'
이렇게 컨테이너 안에 장착하면:
volumes:
- /var/lib/mysql
동작하지만 VM을 재시작하면 dbs가 사라지기 때문에 지속성 문제가 발생합니다.
mysql dir를 생성하여 world writable 권한을 부여하려고 했지만 다음 오류가 발생했습니다.
2016-05-20 23:43:54 140694234605504 [Note] mysqld (mysqld 10.1.14-MariaDB-1~jessie) starting as process 1 ...
2016-05-20 23:43:54 140694234605504 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: The InnoDB memory heap is disabled
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Memory barrier is not used
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using Linux native AIO
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Using SSE crc32 instructions
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Initializing buffer pool, size = 256.0M
2016-05-20 23:43:54 140694234605504 [Note] InnoDB: Completed initialization of buffer pool
2016-05-20 23:43:54 140694234605504 [ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode
2016-05-20 23:43:54 140694234605504 [ERROR] InnoDB: The system tablespace must be writable!
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'InnoDB' init function returned error.
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-05-20 23:43:54 140694234605504 [ERROR] mysqld: File '/var/lib/mysql/aria_log_control' not found (Errcode: 13 "Permission denied")
2016-05-20 23:43:54 140694234605504 [ERROR] mysqld: Got error 'Can't open file' when trying to use aria control file '/var/lib/mysql/aria_log_control'
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'Aria' init function returned error.
2016-05-20 23:43:54 140694234605504 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2016-05-20 23:43:54 140694234605504 [Note] Plugin 'FEEDBACK' is disabled.
2016-05-20 23:43:54 140694234605504 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2016-05-20 23:43:54 140694234605504 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-05-20 23:43:54 140694234605504 [ERROR] Aborting
사용자 1000으로 mysql 컨테이너를 실행합니다.
도커 파일:
USER "1000"
in docker-compose.yml
db:
image: mysql
user: "1000"
이것이 현재의 회피책입니다(docker-compose.yml 경유).1000 사용자는 도커 볼륨(적어도 도커 머신용)에 있는 파일의 기본 사용자이므로 볼륨에 쓸 수 있습니다.
아마 허가 문제일 거예요Mac에서는 도커가 VM을 통해 로컬 디렉토리를 매핑하는 가상 상자에서 실행됩니다.허가를 받는 것은 어렵다.먼저 /Users/andro/Code 디렉토리에 대해 가장 제한적인 권한을 설정해 보십시오.또한 컨테이너를 시작하기 전에 /Users/sandro/Code/myssql 디렉토리를 미리 만들고 전역 쓰기 권한을 부여하십시오.
업데이트: 따라서 이 문제는 실제로 더 복잡합니다.컨테이너 내부의 사용자 ID가 도커 시스템을 시작한 사용자의 ID와 일치하지 않는 한 낮은 수준의 파일 호출을 많이 수행할 수 없는 것 같습니다.다음은 이 문제를 명확히 하는 링크입니다.
https://github.com/boot2docker/boot2docker/issues/581
이 문제는 boot2docker, MariaDB 이미지 시작 스크립트, docker-compose 및 Virtual Box 게스트 운영 체제 간에 발생합니다.
이렇게 함으로써 maria db container를 실행할 수 있었습니다.
mkdir mysql
chmod ug+ws mysql
docker run -it -u $UID:$UID -e MYSQL_ROOT_PASSWORD=bob \
-v /Users/vlad/Proj/Stack/maria/mysql:/var/lib/mysql \
mariadb:latest
-u 옵션은
다음 오류 메시지에서 경로가 이상하게 표시됩니다.mkdir: cannot create directory '/var/lib/mysql//mysql': Permission denied
볼륨 패스에 mariadb 이미지가 /mysql을 추가하는 것처럼 보입니다.제거함으로써/mysql
docker-discl.yml 파일에서 아주 잘 작동했어요.
mdb:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- ./data:/var/lib
언급URL : https://stackoverflow.com/questions/37357315/mariadb-docker-container-on-os-x-cant-create-database-directory
'IT' 카테고리의 다른 글
Printf는 문장의 첫 글자만 표시합니다. (0) | 2022.11.18 |
---|---|
SQL Chemy: 서로 다른 데이터베이스 간 결합 및 모듈 내 서로 다른 파일 사용 (0) | 2022.11.18 |
날짜/시간을 밀리초의 문자열로 포맷합니다. (0) | 2022.11.18 |
사전을 사전에 추가하다 (0) | 2022.11.18 |
HTTP에서 PUT, DELETE HTTP 요청을 보내는 방법URL 연결? (0) | 2022.11.18 |