본문 바로가기

오류해결

Failed to create bus connection: No such file or directory

centos docker container에서 node.js 서버 셋팅 중 locale문제가 있었고, locale을 변경하는 과정에서 오류가 발생했다.

나의 최종 목표는!
docker container의 locale을 ko_KR.utf8로 변경하는 것 & docker를 내렸다 올려도 설정한 locale값이 유지되는 것이다.

나의 docker container의 OS 정보:

(p.s : cat /etc/*release* 하면 os정보를 확인 할 수 있다.)

 

(지극히 현재 상황에서 해결해나간 방법을 순서대로 기록한 것입니다.)


명령어 # locale을 치니 다음과 같이 나왔다.

 

그리고나서 localectl 명령어를 통해 locale 상태정보를 확인하려고 했는데, 다음과 같은 에러가 나왔다.
# localectl status

 

 

 이 에러를 해결하기 위해서는 
 docker를 run할때 --privileged옵션과, -d옵션으로 /sbin/init을 실행한 후, 
 exec로 /bin/bash를 실행해야 한다. 

 

현재 접속한 docker container를 빠져나오고, 다시 docker container를 run했다.
docker run --privileged -p 8089:8089/tcp -itd --name miniServer -d -v /dev/repo/miniServer:/ repo mini:5 /sbin/init

(--privileged옵션과 /sbin/init옵션 외에 포트 지정, 호스트와 마운트하는 옵션, container 이름 설정하는 옵션까지 넣은 명령어이다.)

 

그 다음으로, 생성된 docker container에 접속한다.
docker exec -it 2314d12fd0fd6 /bin/bash

 

# locale -a 명령어를 치면 현재 셋팅할 수 있는 언어목록이 나온다.

 

한국어가 없어서 한국어 지원을 할 수 있도록 한다!

# localedef -f UTF-8 -i ko_KR ko_KR.utf8
# export LANG=ko_KR.utf8

그 다음 # locale 명령어로 확인해보면, 현재 locale이 무엇인지 확인하면 적용되어있다!

 

현재 docker container의 상태를 commit하여 유지하고, commit한 docker image를 다시 run했다.
그런데 내가 설정한 locale이 아니었다. 그래서 다시 이 문제를 해결하기위해 열심히 구글링을 했다.

 

 해결책은, docker container를 run할 때, locale을 설정하는 옵션을 추가하는 것이다!
  " -e LC_ALL=ko_KR.utf8 " 이 옵션을 추가하면된다.  

 

최종적으로 docker container를 run할 때, 다음과 같이 docker container를 run했다. 

docker run --privileged -e LC_ALL=ko_KR.utf8 -p 8089:8089/tcp -itd --name miniServer -d -v /dev/repo/miniServer:/ repo mini:5 /sbin/init

 

 

끝, 내가 원하는대로 docker container를 띄웠을 때 한국어로 설정하는 것이 되었다!

 

 

 

참고블로그:

https://nuggy875.tistory.com/78

https://dev-note.tistory.com/12

https://jenakim47.tistory.com/47