인프런 커뮤니티 질문&답변

rosy님의 프로필 이미지

작성한 질문수

Airflow 마스터 클래스

permission denied 오류 관련 문의드립니다!

해결된 질문

24.07.04 18:12 작성

·

118

0

안녕하세요! 강사님 질문이 하나 있는데요,

제가 중간에 docker를 삭제했다가 다시 설치해서 하고 있는데

다른 것들은 잘 되는데, 서울시 공공 데이터 API를 가지고 Custome Operator를 하는 과정에서

image.png

dags_seoul_api_corona.py 이 실행이 안되어서 문의드려요!

처음에 directory가 없다는 오류가 떠서 생성하는 코드를 추가해봤는데,

추가한 이후에 dag 실행해도 실패해서 로그를 확인해보니

 

image.png

permission 거부 문제로 오류가 발생한 것을 확인하였습니다.

docker-compose.yaml에서 volumes는 잘 설정되었는데,

혹시 제가 AIRFLOW_CORE_EXECUTOR를 LocalExecutor로 바꾼 게 문제가 되었을까요?

databricks와 airflow를 연동하면서 dns를 설정하고, command를 좀 수정하였는데 이 부분이 문제였을까요...?

 

ChatGPT에 물어보니 Webserver로 들어가서 Docker 컨테이너 내에서 이 디렉토리의 소유자를 airflow 사용자로 변경하면 된다고 하는데,

[sudo] password for default: 부분에서 비밀번호 에러가 나네요...!

저는 따로 default에 대한 비밀번호를 설정하지 않아서 해당 비밀번호를 잘 모르는 상태입니다..!

 

docker를 재설치해야할 것 같은데... 하기 전에 강사님께 문의 드립니다!

편하게 답변 주시면 감사하겠습니다!!

 

 

 

 

답변 2

0

김현진님의 프로필 이미지
김현진
지식공유자

2024. 07. 05. 10:26

안녕하세요 rosy님 ^^

이런 문제는 십중팔구 컨테이너와 볼륨을 연결/제공하고 있는 WSL 의 디렉토리인

./airflow/files 디렉토리가 root 권한으로 만들어져서 그렇습니다.

airflow 디렉토리 위치에서 mkdir files 로 만드셔야 하는데 sudo mkdir files 로 만들면 root 소유로 만들어지게 됩니다. 권한 확인해보시고 files 디렉토리의 owner를 현재 계정으로 바꿔주세요 ^^

 

rosy님의 프로필 이미지
rosy
질문자

2024. 07. 05. 15:29

대박! 강사님 말씀이 맞았습니다 ㅎㅎ

확인해보니

image.png

root로 되어있었고,

image.png

권한 바꿔준 후에 dag 실행하니 성공하였습니다!

감사합니다 ㅎㅎㅎ

김현진님의 프로필 이미지
김현진
지식공유자

2024. 07. 05. 20:52

네 화이팅입니다 ^^

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 04. 18:17

안녕하세요, 인프런 AI 인턴입니다.

rosy님께서 겪고 계신 Permission denied 오류는 Docker 및 Apache Airflow 환경에서 디렉터리 또는 파일에 대한 접근 권한 문제로 발생하는 것으로 보입니다. 이와 관련하여 유사한 문제를 해결한 기존 질문과 답변을 참조하시는 것이 도움이 될 수 있습니다.

기존 답변에서는 주로 Docker 컨테이너 내부에서 파일 및 디렉터리의 소유권을 변경하는 방법, Airflow 설정에서 권한 관련 문제를 해결하는 방법, 그리고 Docker Compose 설정 파일에서 volumes 설정을 통해 호스트와 컨테이너 간에 올바른 파일 접근 권한을 설정하는 방법 등이 제시되었습니다.

다음은 유사한 상황을 해결한 몇 가지 기존 답변의 링크입니다:

  1. Task 실행관련 질문입니다.

    • 이 답변은 Docker Compose 환경에서 발생하는 파일 경로 문제와 관련된 질문으로, 당시 문제는 Docker Compose의 volumes 설정 오류로 인해 발생했습니다. 문제의 해결 방법이 도움이 될 수 있습니다.
  2. 섹션7: SimpleHttpOperator import error문제

    • xmltodict 라이브러리 설치 관련 문제로, Dockerfile 및 Docker Compose 설정에서 패키지를 설치하여 docker 컨테이너에서 사용하는 방법에 대해 설명합니다. 운영체제 수준의 권한 문제 해결을 위한 참고 사항으로 유용할 수 있습니다.
  3. task가 실행되지 않습니다.

    • Airflow 작업이 실행되지 않는 상황과 관련된 질문으로, 로그에서 권한 문제를 포함한 오류 메시지를 진단하는 과정이 설명되어 있습니다. 권한 문제 해결을 위한 단서를 제공할 수 있습니다.

위의 링크들은 Docker와 Airflow 환경에서 발생하는 권한 문제를 해결한 사례들을 포함하고 있으므로, rosy님의 상황에 일부 적용 가능한 해결 방법을 찾을 수 있을 것입니다.

혹시 문제가 지속될 경우, AIRFLOW_CORE_EXECUTOR 설정 변경, Docker Compose의 volumes 설정 확인, sudo 명령어 사용시 sudo 권한이 없음을 나타내는 에러에 대해 추가 조사가 필요할 수 있습니다. Docker 컨테이너 내부에서 권한 문제 해결을 위해 sudo docker exec 명령어 실행 시, 권한 문제가 있다면 sudo의 사용권한, Docker 데몬에 대한 접근 권한, 또는 해당 사용자가 Docker 그룹의 멤버인지 확인해야 합니다.

rosy님의 경우, Docker 데몬과 통신할 수 있는 사용자 권한이 필요한데, sudo 명령어 사용에 문제가 있다면 현재 사용자가 docker 그룹의 멤버인지 확인하고, 아니라면 사용자를 docker 그룹에 추가하는 방법을 시도해 볼 수 있습니다. 사용자를 Docker 그룹에 추가하는 방법은 다음과 같습니다:

sudo usermod -aG docker $USER

그 후 로그아웃하고 다시 로그인하여 변경 사항을 적용합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

rosy님의 프로필 이미지

작성한 질문수

질문하기