본문 바로가기

잡다/docker

[docker] 오늘의 삽질 → docker daemon is not running & wsl2 apt-get can't connect to security.ubuntu.com

 결과적으로 현재 문제는 컴퓨터를 최신 상태로 업데이트 하면서 해결 되었다. 그러나 정말 이유도 모른채 해결되어버린 문제라, 혹시 차후에 해당 상황이 다시 발생한다면 오늘의 행동을 재현해보기 위해 이 글을 써본다.


 당시 상황을 설명하면, 나는 WSL2 환경에서 도커 이미지를 만드는 연습을 위해 vscode을 실행하려 했다. 당시 컴퓨터로 웹서핑을 조금 한 후, WSL2을 켠 상태였다. 나는 다음과 같은 명령을 통해 vscode을 실행했다.

code . // 현재 폴더에서 vscode을 실행한다

 그런데 vscode가 업데이트를 진행하면서도 몇분이고 0% 상태에 머물렀다. 이후 3번 이상 vscode 실행을 시도했지만 여전히 제대로 실행되지 않았기에, 나는 어떤 문제가 있으리라 판단하여 몇가지 작업을 시도해봤다.

 삽질 1 : WSL2을 종료했다가, 다시 실행하기.

 과거에도 이런 상황이 있었는데, 그때는 WSL2를 한번 종료했다가 다시 실행하면 문제가 해결되었었다 ( 당시에는 WSL2 환경에서 일종의 네트워크 문제가 발생했던 것으로 기억한다. ) . 따라서 윈도우 환경의 powershell 에서 다음 명령을 입력하여 WSL2을 한번 종료한 후 다시 실행하였다.

wsl --shutdown // wsl을 종료한다
wsl // wsl을 실행.

 그러나 이번에는 해당 문제가 해결되지 않았다. WSL2 만으로는 해결될 수 없는 문제일지도 모른다는 생각이 들었다.


삽질 2 : apt 서버에 ping, apt 서버 국내로 변경하기.

 나의 WSL2 환경이 사용하던 apt 서버는 기본 설정 그대로 외국에 서버를 둔 http://archive.ubuntu.com/ 을 사용하고 있었다. 이때 혹시 네트워크 문제로 현재 해당 서버에 연결할 수 없는 것은 아닌가 생각이 들어 인터넷에 검색을 하다 보니, 몇가지 명령을 실행하면 apt 서버에 연결할 수 있는지 여부를 알 수 있다는 것을 알게 되었다.

1) ping 명령을 통해 사용중인 apt 서버에 대한 네트워크 상태를 검사

 ping 명령은 현재 호스트가 특정 네트워크를 사용할 수 있는지(접근할 수 있는지) 를 검사하기 위한 유틸리티로, 작은 패킷을 해당 네트워크에 여러번 보내 해당 네트워크에 대한 활성 여부, RTT(패킷의 왕복 시간), 패킷 손실 여부 등을 조사하는 것 등을 목적으로 한다. 이 명령을 사용중인 apt 서버에 대해 수행하였다.

ping http://archive.ubuntu.com/

  네트워크가 정상적으로 연결되면, 다음과 같이 패킷이 도달했다는 메시지가 출력된다.

 당시 WSL2 환경에서는 어떤 패킷 도달 메시지도 받지 못했다.

2) apt-get update 혹은 apt-get upgrade 실행해보기

각 명령은 다음의 목적을 지닌다.

  1. apt-get update : 현재 버전에서 가능한 모든 패키지 리스트를 업데이트 하되, 설치하지는 않는다.
  2. apt-get upgrade : 내 환경에 설치된 패키지를 최신 버전으로 설치한다.

 이때 두 명령 모두 apt 서버로부터 특정 정보를 가져오기 때문에 해당 서버에 의존한다. 따라서 위 명령이 제대로 실행되지 않으면, 해당 apt 서버가 다운된 것이 아닌 이상 나의 환경에 문제가 있다고 판단할 수 있다.

sudo apt-get install
sudo apt-get upgrade

 이 경우도 security.ubuntu.com 에 연결할 수 없다는 에러 메시지가 출력되며, 정상적인 업데이트가 불가능했다.

해결책...? → apt 서버 바꾸기

 따라서 나는 현재 외국에 있는 apt 서버와 나의 환경이 연결되어 있지 않다고 판단하여, apt 서버를 변경하기로 했다.  한국에는 apt 서버가 많은데, 여기서 리스트를 볼 수 있는 모양이다.

https://launchpad.net/ubuntu/+cdmirrors   또는    https://launchpad.net/ubuntu/+archivemirrors 

(https://lonaru-burnout.tistory.com/5?category=947379 : 이 글을 참고했다.)

 우선 나는 카이스트에서 지원하는 apt 서버를 이용하기로 했다. 대충 정보를 찾아본 결과, 현재로서는 카카오의 apt 서버가 괜찮다는 것 같으니, 적당히 원하는 서버를 사용하면 될 것 같다.

아무튼, 다음과 같은 과정을 통해 내가 사용하고자 하는 apt 서버를 바꾼다.

cd /etc/apt    
# apt와 관련된 파일이 있는 폴더로 이동

sudo nano sources.list    
# nano 에디터로 sources.list 파일을 관리자 권한 실행

# ctrl + \ 을 눌러 replace 모드 진입
# archive.ubuntu.com 입력 + 엔터.( 개인 환경에 따라 다른 서버를 이용중일 수 있음. )
# kr.archive.ubuntu.com + 엔터. ( 변경하고 싶은 apt 서버를 입력 ) 
# a를 눌러 모든 요소 변경
# ctrl + s 눌러 저장
# ctrl + x 눌러 나가기

제대로 입력되었다면, 어떻게 변경할 것인지 메세지가 출력된다.

 이렇게 바꾼 결과, apt-get update는 어느 정도 실행되었음에도 여전히 apt-get upgrade는 제대로 작동하지 않았다. apt 서버와 연결되는 것이 문제이기는 한데, apt 서버 자체가 문제는 아닌 모양이다.


삽질 3 : docker 재설치 

 스택 오버플로우를 계속 찾아보다 보니 도커를 WSL2와 함께 사용하던 도중, 갑자기 나와 같은 증상이 발생한 사람들이 꽤 있다는 것을 알게 되었다. 나 같은 경우 WSL2의 문제를 해결할 방법을 찾고 있었는데, 이러한 글을 본 후 실제로 powershell 및 WSL2 환경에서 도커를 실행해본 결과, 다음 글과 같은 증상이 발생했다.

https://stackoverflow.com/questions/55301756/docker-daemon-is-not-running#:~:text=Access%20is%20denied.-,In%20the%20default%20daemon%20configuration%20on%20Windows%2C%20the%20docker%20client,docker%20daemon%20is%20not%20running.&text=try%20to%20open%20docker%20gui%20again.

 

Docker daemon is not running

Newbie in this area. I have installed the new version of Docker in my windows PC. I am using windows 10 Pro. I have tried the very basic docker command but it is not working. I have also run the do...

stackoverflow.com

 다른 사람들의 여러가지 해결 방법이 있지만, 나는 도커에 딱히 중요한 내용이 없는 상태였기 때문에 우선 프로그램을 삭제했다가 재설치하기로 했다. 아쉽게도 재설치는 문제를 해결해주지 못했다. 여전히 WSL2 는 제대로 동작하지 않았으며, 도커는 같은 오류를 반복했다.


최후의 보루 : 컴퓨터를 업데이트 & 재시작

 방법을 찾아봐도 딱히 해답이 없어, 나는 컴퓨터를 업데이트 하는 김에 재시작했다. 그런데, 컴퓨터를 재시작하니 마법같이 도커가 제대로 동작하기 시작했다 ...

docker ps 명령을 통해 실행중인 프로세스 정보를 보기. 원래는 도커  실행 자체가 안됬다.

해당하는 업데이트는 다음과 같다.

https://support.microsoft.com/ko-kr/topic/2022%EB%85%84-2%EC%9B%94-8%EC%9D%BC-kb5010342-os-%EB%B9%8C%EB%93%9C-19042-1526-19043-1526-%EB%B0%8F-19044-1526-bd5c4434-bec4-42e9-991d-5810d4ec52d9

 다만 해당 업데이트는 wsl2과 관계된 내용이 딱히 없다.  문제가 해결된 것은 아마 컴퓨터를 재시작하면서 컴퓨터 내에서 발생한 어떤 오류가 해결된 것 덕분인 것으로 보인다. 이렇게 문제가 해결되어 버리니, 제대로 된 원인을 분석할 방법이 없어 어딘가 모를 찝찝함이 계속 남는다. 

 문제점을 예상해보면, 모종의 네트워크 문제 ( 포트 사용 ? ) 로 인해 WSL2가 정상적으로 작동하지 않았고, 이로 인해 WSL2를 데몬으로 사용하는 도커 역시 오동작한 것이 아닐까 생각된다. 


 이번 문제는 컴퓨터를 재시작함으로써 해결되어 버려서, 뭔지 모를 찝찝함만을 남긴다. 네트워크의 문제가 맞는지 한번 알아보기 위해 다음에 같은 일이 반복되면 아래 명령을 수행해 봐야겠다.

https://blaxsior-repository.tistory.com/80?category=889044 : 해당 글에서 node를 동작시킬 때 사용한 방법이다.

net stop winnat
net start winnat

 현재 글이 큰 도움이 되지는 않을 것 같지만, 그래도 어느 정도의 영감을 얻을 수 있기를 바란다. 내가 문제 해결을 위해 검색했던 검색어를 제시하며, 현재 글을 마친다.

  • docker deamon is not running
  • cannot connect to security.ubuntu.com wsl2
  • wsl2 security.ubuntu.com