최근 회사에서 팀을 옮기면서 도커(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로 다시 변경하였다.
출처: https://dct-wonjung.tistory.com/entry/Docker-failed-control-process-exited-오류-해결 [꿈찾원:티스토리]
'IT > CLOUD(AWS,Azure,GCP,Docker)' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 클러스터 구축 (0) | 2022.06.19 |
---|---|
Kubernetes #3. 쿠버네티스 Unable to connect to the server: x509 에러 (0) | 2022.06.19 |
Kubeadm unknown service runtime.v1alpha2.RuntimeService (0) | 2022.06.19 |
[Docker] Ubuntu에 Docker 설치하기 (0) | 2022.06.19 |
[Docker] Package 'docker-ce' has no installation candidate 에러 (0) | 2022.06.19 |