[docker] Docker : 컨테이너가 계속 다시 시작됨

나는 오늘 appcontainers / mediawiki 도커 이미지를 사용하여 MediaWiki의 인스턴스를 배포했고, 이제 단서를 찾을 수없는 새로운 문제가 생겼습니다. 다음을 사용하여 미디어 위키 전면 컨테이너에 연결을 시도한 후 :

docker attach mediawiki_web_1

Terminated내가 무시하는 이유로 내 구성에 대한 대답 은 다음과 같습니다.

docker exec -it mediawiki_web_1 bash

오류 메시지에 가까운 내용이 표시됩니다.

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

그리고 내 새로운 문제가 있습니다. 왜냐하면이 컨테이너는 다시 시작을 멈추지 않기 때문입니다. docker ps -a항상 STATUS를 반환하는 사용 을 볼 수 있습니다 Restarting (127) x seconds ago.

문제는 컨테이너를 중지 할 수 있지만 (테스트) 다시 시작하면 다시 시작 루프로 돌아 오는 것 같습니다.

여기서 문제가 뭔지 아세요? 내가 부착하려고 할 때까지 모든 것이 제대로 작동했습니다 …

나는 슬프다 🙁



답변

docker logs명령은 대화 형으로 실행하지 않을 때 컨테이너가 생성하는 출력을 보여줍니다. 여기에는 오류 메시지가 포함될 수 있습니다.

docker logs --tail 50 --follow --timestamps mediawiki_web_1

포 그라운드에서 새로운 컨테이너를 실행하여 그 기능을 확인할 수도 있습니다 docker run -ti <your_wiki_image>. docker-composeyml의 일부 구성을 docker명령 에 매핑해야 할 수도 있습니다 .

미디어 위키 프로세스에 연결하면 충돌이 발생하여 데이터가 손상되었다고 생각합니다.


답변

docker kill CONTAINER_ID작동하지 않습니다 docker stop -t 1 CONTAINER_ID하지 작업, 당신은 컨테이너를 삭제하려고 할 수 있습니다 않습니다 또한 :

docker container rm CONTAINER_ID

오늘 컨테이너가 지속적인 재시작 루프에있는 유사한 문제가 발생했습니다.

제 경우의 문제는 제가 가난한 엔지니어라는 것과 관련이 있습니다.

어쨌든 컨테이너를 삭제하고 코드를 수정 한 다음 컨테이너를 다시 빌드하고 실행하여 문제를 해결했습니다.

이것이 앞으로이 문제에 걸린 사람에게 도움이되기를 바랍니다.


답변

개인적인 경험으로 볼 때 Docker 컨테이너에 문제가있어 다시 시작할 수없는 것 같습니다. 따라서 컨테이너 내의 일부 프로세스로 인해 다시 시작이 중단되거나 일부 프로세스로 인해 컨테이너가 시작시 충돌이 발생합니다.

컨테이너를 시작할 때 컨테이너에 연결하려면 분리 된 “-d”를 시작해야합니다. (예 : “docker run -d mediawiki_web_1”)


답변

tl; dr127 컨테이너에 누락 된 파일 / 라이브러리가 있음을 의미 하는 상태 코드로 다시 시작됩니다 . 새 용기를 시작하면 문제가 해결 될 수 있습니다.

설명:

Docker에 대한 나의 이해가 진행되는 한 다음과 같은 일이 발생합니다.

  1. 컨테이너가 시작하려고합니다. 이 과정에서 존재하지 않는 파일 / 라이브러리에 접근을 시도합니다.
  2. 이 답변에127 설명 된 상태 코드로 종료됩니다 .
  3. 일반적으로 컨테이너가 완전히 종료되어야하지만 다시 시작됩니다.
  4. 컨테이너를 시작하는 동안 다시 시작 정책no( default ) 이외의 다른 값으로 설정되어 있어야 하므로 ( 명령 줄 플래그 --restart또는 docker-compose.yml키 사용 restart) 다시 시작됩니다.

솔루션 : 컨테이너가 손상되었을 수 있습니다. 신선한 용기를 시작하는 것이 이상적입니다.


답변

다음과 같은 systemd서비스를 생성 한 경우에도 마찬가지 입니다.

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container


답변

제 경우에는 nginx 컨테이너가 계속 다시 시작되었고, nginx 컨테이너의 로그를 확인하고 불필요한 도메인의 .crt 및 .key 파일에 오류가 있음을 알게되었으므로 각 .conf 파일, .crt 및 .key를 제거한 다음 다시 시작했습니다. nginx. 다시 시작하지 않고 nginx가 제대로 작동합니다.


답변

나는 Minikube가 백그라운드에서 실행되는 것을 잊었고 항상 백업을 다시 시작했습니다.