사용한 yml 파일중 에러부분을 가져왔습니다.
services:
proxysql:
image: proxysql/proxysql:2.7.2
container_name: proxysql
ports:
- "6033:6033" # MySQL client port
- "6032:6032" # Admin port
# volumes:
# - C:/DockerProxy/config/proxysql.cnf:/etc/proxysql.cnf
# - C:/DockerProxy/data/proxysql:/var/lib/proxysql
volumes:
- type: bind
source: C:/DockerProxy/config/proxysql.cnf
target: /etc/proxysql.cnf
read_only: true
- C:/DockerProxy/data/proxysql:/var/lib/proxysql
networks:
- db_network
depends_on:
- mysql_master
- mysql_slave1
- mysql_slave2
여기서 read_only를 안넣으면
PS C:\DockerProxy> docker compose up -d
time="2025-02-19T16:32:13+09:00" level=warning msg="C:\\DockerProxy\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 4/5
✔ Network dockerproxy_db_network Created 0.1s
✔ Container mysql_master Started 1.1s
✔ Container mysql_slave2 Started 1.4s
✔ Container mysql_slave1 Started 1.5s
- Container proxysql Starting 1.8s
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/run/desktop/mnt/host/c/DockerProxy/config/proxysql.cnf" to rootfs at "/etc/proxysql.cnf": mount /run/desktop/mnt/host/c/DockerProxy/config/proxysql.cnf:/etc/proxysql.cnf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
PS C:\DockerProxy> docker compose down
time="2025-02-19T16:32:29+09:00" level=warning msg="C:\\DockerProxy\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
으로 뜨면서 proxysql 컨테이너가 실행이 안됐습니다.
#########
이유:
2가지 이유로 보안적 측면과 Docker 고유의 마운트 방식입니다.
1-보안적 이유로는
ProxySQL은 설정 파일을 읽기 전용으로만 필요로 함
컨테이너 내부에서 설정 파일 변조를 방지
런타임 중 예상치 못한 설정 변경 방지
2- Docker 고유 방식 이
read_only: true를 지정하지 않으면 Docker는 양방향 마운트를 시도
ProxySQL은 설정 파일에 대해 쓰기 권한이 있으면 오류 발생
이는 ProxySQL의 설계 의도 (설정은 admin 인터페이스를 통해서만 변경)
이런 이유로 read_onlt를 안넣으면 에러가 납니다.
'SQL&DB' 카테고리의 다른 글
| Mysql-Master&Slave 구성 (0) | 2025.02.27 |
|---|---|
| mysql-commit (0) | 2025.02.27 |
| grafana 와 prometheus 연결 (0) | 2025.02.18 |
| mysql 입력 이상하게 될때 (0) | 2025.02.10 |
| 도커 컴포즈 정리 (0) | 2025.02.10 |