최근 회사에서 팀을 옮기면서 도커(Docker)를 드디어 사용해보게 되었다. 말로만 많이 들었지 직접 사용해 보는 건 처음이라서 삽질이란 삽질은 다 하는 중이다.
오늘은 그중에서 아래 오류가 발생해서 여기저기 뒤져가며 겨우 해결한 과정을 적어보고자 한다. 나중에 또 삽질하지 않기 위해서!
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
도커 데몬 실행 문제 발생
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
문제는 여기서부터 발생했다. 도커로 뭔가 작업을 해야 하는데 도커가 실행 중이지 않다는 것이다. 그럼 도커를 실행해보자.
$ sudo systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-11-24 17:39:04 KST; 4s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Process: 5348 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 5348 (code=exited, status=1/FAILURE)
11월 24 17:39:04 jungyeunwon-B365M-D3H systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
11월 24 17:39:04 jungyeunwon-B365M-D3H systemd[1]: Stopped Docker Application Container Engine.
11월 24 17:39:04 jungyeunwon-B365M-D3H systemd[1]: docker.service: Start request repeated too quickly.
11월 24 17:39:04 jungyeunwon-B365M-D3H systemd[1]: docker.service: Failed with result 'exit-code'.
11월 24 17:39:04 jungyeunwon-B365M-D3H systemd[1]: Failed to start Docker Application Container Engine.
도커를 실행하면 뭔가 에러가 발생해서 docker.service를 실행하는 작업이 실패했다고 한다. 시키는 대로 status를 살펴보니 Active: failed 상태인 걸 확인할 수 있었다.
그리고 아래를 쭉 읽어보면 아래에서 세 번째 줄에 Start request repeated too quickly.라는 문구가 있다. 너무 빠르게 재시작되었다고? 분명 도커가 running 상태가 아니라고 해서 다시 켜려고 하는 거라 이해가 안 됐다.
해결 과정 1 - 도커가 빠르게 재시작되지 않도록 하기
앞서 봤듯이 도커를 실행시킬 때 재시작되면서 뭔가 충돌이 일어나는 것 같았다. 구글링을 열심히 해보니 Restart 설정을 바꿔주면 된다고 한다.
$ vi /lib/systemd/system/docker.service
위 파일을 열어 Restart 설정을 Restart=no로 바꿔주었다(원래는 always로 설정되어 있었다). 이 설정을 변경하고 다시 도커 데몬을 실행하려고 하니 또 에러가 발생했다. 그래도 에러 메시지가 변경된 걸 보면 앞선 문제는 해결된 것 같다.
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-11-24 17:42:37 KST; 2s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Process: 5648 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 5648 (code=exited, status=1/FAILURE)
11월 24 17:42:37 jungyeunwon-B365M-D3H systemd[1]: Starting Docker Application Container Engine...
11월 24 17:42:37 jungyeunwon-B365M-D3H dockerd[5648]: time="2021-11-24T17:42:37.811937480+09:00" level=info msg="Starting up"
11월 24 17:42:37 jungyeunwon-B365M-D3H dockerd[5648]: failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
11월 24 17:42:37 jungyeunwon-B365M-D3H systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
11월 24 17:42:37 jungyeunwon-B365M-D3H systemd[1]: docker.service: Failed with result 'exit-code'.
11월 24 17:42:37 jungyeunwon-B365M-D3H systemd[1]: Failed to start Docker Application Container Engine.
해결 과정 2 - 도커 프로세스 kill 및 재실행 성공
다음 문제는 failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid 이 부분에서 해결의 실마리를 얻었다. 아무래도 이전에 도커가 비정상적으로 종료되어 프로세스가 완전히 죽지 않은 것 같다. 아래 커맨드를 입력해서 도커가 실행 중인지 확인해보자.
$ ps -ef | grep dockerd
root 3552 1545 0 17:30 ? 00:00:00 sudo dockerd
root 3553 3552 0 17:30 ? 00:00:07 dockerd
jungyeu+ 5899 3698 0 17:43 pts/1 00:00:00 grep --color=auto dockerd
프로세스 3552번에서 dockerd (docker daemon)가 실행 중이다. 얼른 얘를 죽이고 다시 실행해보자.
$ sudo kill -9 3553
$ ps -ef | grep dockerd
jungyeu+ 6141 3698 0 17:46 pts/1 00:00:00 grep --color=auto dockerd
$ sudo service docker start
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
드디어 도커가 정상적으로 실행되었다! 앞으로 계속 정상적으로 종료된다면 첫 번째 문제가 발생하지 않을 것 같아서, 해결 후에 Restart=always로 다시 변경하였다.
★광고 클릭은 큰 힘이 됩니다★
'실무' 카테고리의 다른 글
스프링부트 3.x에서 Querydsl 설정하기 (0) | 2024.02.21 |
---|---|
[JPA/MySQL] saveAll() 쓰면 쿼리 하나로 나가는 거 아니었어? / JPA에서 Bulk Insert 처리해보기 (0) | 2023.11.10 |
[IntelliJ/Windows] 인텔리제이 SDK 설정하기 & 윈도우 OpenJDK설치 (0) | 2021.12.02 |
apt update 404 Not Found 에러 해결 방법 - The repository does not have a Release file. (0) | 2021.10.07 |
댓글