기술/기타

[docker] docker로 올린 jupyter notebook에서 sudo 명령어 jovyan 비밀번호 해결

하기싫지만어떡해해야지 2025. 1. 15. 13:55

나는 큰 데이터로 작업하는 일이 많아서

작업을 할 때 서버에 jupyter를 docker로 올리고

그 내부에서 데이터를 다운받거나 코딩 작업을 주로 한다

 

이번에도 그렇게 작업을 하던 중

jupyter 환경에서 sudo 명령어를 사용해야 할 일이 생겼는데

sudo 명령어를 terminal에 치니

jovyan password를 입력하라고 나왔다

 

이에 관해 열심히 구글링을 했더니

jovyan에 대한 분노 글을 많이 발견했는데..

 

간단하게 설명하자면

docker로 jupyter를 pull 받아서

사용하는 경우는 대부분 jovyan 계정으로 접속해서 사용하게된다

 

jovyan이 뭐.. jupyter(목성)의 위성이라

jupyter를 사용하는 사람들..어쩌구 저쩌구 하던데

 

그런데 문제는 jupyter notebook을 사용하다보면

어쩔 수 없이 sudo 명령어를 사용해야 할 일이 생기는데

이때 입력해야 할 jovyan user의 비밀번호를

공개하고 있지 않아서 많은 사람들의 미움을 받고있었다

 

 

아무튼 그래서 비밀번호를 공개하지 않고 있기 때문에

우리가 비밀번호를 입력할 수는 없고

jovyan에서 sudo를 입력해도

비밀번호를 안치고 작업을 수행할 수 있게

우회하는 방법이 있다

 

생각보다 간단해서 기록하기로 했다


우선 jupyter가 띄워져있는 docker container에

root 계정으로 bash에 접속한다

docker exec -it -u root <container_id> bash

 

 

접속한 다음 whoami 명령어로

root임을 한 번 확인해주자

 

 

확인했으면 /etc/sudoers 라는 파일에서

jovyan으로 접속할 때 password를

치지 않아도 되게끔 해주는 라인을 추가해줘야한다

 

echo 명령어로 아래와 같이 추가해주자

echo "jovyan  ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

 

 

그런다음 cat 명령어로 /etc/sudoers 파일을 한 번 확인해주면

cat /etc/sudoers

 

 

위에 뭐라 블라블라 있고 가장 마지막에

우리가 추가한 라인이 있는 것을 확인할 수 있다

 

 

그런 다음 bash를 나와서

docker를 restart 해주자

docker restart <container_id>

 

 

restart한 다음 jupyter의 terminal에 접속해서

아무 sudo 명령어나 쳐보면

 

 

비밀번호를 치지 않아도

알음답게 작업이 되는 것을 확인할 수 있다