데이터 엔지니어 기술 블로그

[MYSQL] Docker MYSQL 로그에서 "mbind: Operation not permitted" 이슈 해결방법 본문

데이터 엔지니어링

[MYSQL] Docker MYSQL 로그에서 "mbind: Operation not permitted" 이슈 해결방법

jun_yeong_park 2021. 6. 7. 12:44
반응형

개요

mysql은 도커 컨테이너로 올라가있는 상태이고, 로컬에 볼륨이 공유된 상태로 사용하고 있었다. 

mysql에서 로그를 확인해보니 아래와 같은 로그를 확인할 수 있었다.

mbind: Operation not permitted

 

해결 방법

mbind는 리눅스 명령어로 메모리 범위에 대한 메모리 정책 설정을 뜻한다.

mbind를 사용하는 명령어에서 권한이 없는 문제로 예상된다. 도커 공식 문서에 보면 아래와 같은 내용이 있다.

--cap-add=sys_nice Grants the container the CAP_SYS_NICE capability, which allows the container to raise process nice values, set real-time scheduling policies, set CPU affinity, and other operations.

 

CAP_SYS_NICE란?

user ID가 0이 아닌 계정(root가 아닌 계정)은 권한을 검사하는데 계정에 대한 권한 이름 중 하나이다.

 

아래와 같은 다양한 종류의 권한들이 있다.

  • CAP_SYS_MODULE
  • CAP_SYS_CHROOT
  • CAP_AUDIT_CONTROL

CAP_SYS_NICE가 가지고 있는 권한들은 다음과 같다.

  • 호출 프로세스에 대한 실시간 스케줄링 정책을 설정하고 임의 프로세스에 대한 스케줄링 정책 및 우선 순위를 설정한다.
  • 임의 프로세스에 대한 CPU 선호도를 설정한다.
  • 임의 프로세스에 대한 I/O 스케줄링 클래스 및 우선 순위를 설정한다.
  • ...

 

 

docker-compose를 사용할 경우 실행 방법

service:
  mysql:
    image: mysql
    cap_add:
      - SYS_NICE

 

커맨드로 사용할 경우 실행 방법

docker run --cap-add=sys_nice -d mysql

 

결론

cap-add로 SYS_NICE 권한을 주면 더 이상 mbind: Operation not permitted 오류가 발생하지 않게 된다.

반응형
Comments