2025-02-19 16:41:06

사용한 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