> 운영 및 유지보수 > Docker > Docker 컨테이너를 시작할 수 없는 문제에 대한 해결 방법

Docker 컨테이너를 시작할 수 없는 문제에 대한 해결 방법

PHPz
풀어 주다: 2023-04-04 09:46:21
원래의
3954명이 탐색했습니다.

Docker는 개발 및 배포에 널리 사용되는 인기 있는 컨테이너화 플랫폼입니다. 그러나 Docker 컨테이너를 사용할 때 때때로 시작 오류가 발생할 수 있습니다. 이 기사에서는 몇 가지 일반적인 문제를 살펴보고 해결 방법을 제공합니다.

  1. 컨테이너 상태 확인

먼저 컨테이너 상태를 확인해야 합니다. 실행 중인 컨테이너와 실행되지 않는 컨테이너를 포함한 모든 컨테이너의 상태를 보려면 docker ps -a 명령을 사용하세요. 컨테이너 상태가 Exited인 경우 컨테이너 실행이 중지되었음을 의미합니다. docker ps -a 可以查看所有容器的状态,包括运行中的和未运行的容器。如果容器状态为 Exited,则说明容器已经停止运行。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
8a9506b91d24        nginx               "nginx -g 'daemon of…"   2 hours ago         Exited (1) 2 hours ago                            nginx-container
로그인 후 복사
  1. 检查容器日志

当容器启动失败时,我们可以通过查看容器日志来获取更多详细信息。使用命令 docker logs CONTAINER_NAME/ID 可以查看容器的日志输出。如果此时容器已经关闭,可以使用参数 -f 持续查看日志。

$ docker logs nginx-container
2021/08/23 08:08:09 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)
...
로그인 후 복사

以上面的 nginx-container 为例,可以看到错误信息是 bind() to 0.0.0.0:80 failed (98: Address already in use),表明端口 80 已经被占用,因此容器无法启动。

  1. 检查容器端口映射

前面的错误提示已经提到了端口占用问题,因此我们需要检查容器的端口映射是否正确。使用命令 docker port CONTAINER_NAME/ID 可以查看容器的端口映射情况。

$ docker port nginx-container
80/tcp -> 0.0.0.0:8080
로그인 후 복사

上面的输出表明容器的 80 端口被映射到了宿主机的 8080 端口,因此我们需要检查宿主机的 8080 端口是否被占用。

  1. 检查容器内部服务

有时候容器启动失败是由于内部服务无法正常启动。例如,数据库容器连接失败、应用程序自身的配置问题等等。在这种情况下,我们需要进入容器内部,手动运行服务并检查输出信息。

使用命令 docker exec -it CONTAINER_NAME/ID bash

$ docker exec -it nginx-container bash
로그인 후 복사
    컨테이너 로그 확인

      컨테이너 시작에 실패하면 컨테이너 로그를 보면 자세한 내용을 확인할 수 있습니다. 컨테이너의 로그 출력을 보려면 docker log CONTAINER_NAME/ID 명령을 사용하세요. 이때 컨테이너가 종료된 경우 -f 매개변수를 사용하여 로그를 계속 볼 수 있습니다.
    1. $ docker stop nginx-container
      $ docker rm nginx-container
      로그인 후 복사
    2. 위의 nginx-container를 예로 들면, 오류 메시지가 bind() to 0.0.0.0:80 failed (98: Address 이미 사용 중) 는 포트 80이 이미 사용 중이므로 컨테이너를 시작할 수 없음을 나타냅니다.

      컨테이너 포트 매핑 확인

      이전 오류 메시지에서 포트 점유 문제를 언급했기 때문에 컨테이너의 포트 매핑이 올바른지 확인해야 합니다. 컨테이너의 포트 매핑을 보려면 docker port CONTAINER_NAME/ID 명령을 사용하세요.

      $ docker build -t my-nginx .
      $ docker run -d --name nginx-container -p 8080:80 my-nginx
      로그인 후 복사
      위 출력은 컨테이너의 포트 80이 호스트의 포트 8080에 매핑되어 있음을 보여주므로 호스트의 포트 8080이 사용되고 있는지 확인해야 합니다. 🎜
        🎜컨테이너 내부 서비스 확인🎜🎜🎜내부 서비스가 정상적으로 시작되지 않아 컨테이너 시작이 실패하는 경우도 있습니다. 예를 들어 데이터베이스 컨테이너 연결 실패, 애플리케이션 자체의 구성 문제 등이 있습니다. 이 경우 컨테이너 내부로 이동하여 서비스를 수동으로 실행하고 출력을 확인해야 합니다. 🎜🎜docker exec -it CONTAINER_NAME/ID bash 명령을 사용하여 컨테이너에 들어가세요. 🎜rrreee🎜컨테이너 내부에서 확인이 필요한 서비스를 실행하고 출력정보를 확인해보세요. 🎜🎜🎜이미지 다시 빌드🎜🎜🎜컨테이너를 시작할 수 없고 위의 방법 중 어느 것도 도움이 되지 않으면 컨테이너를 다시 빌드해 볼 수 있습니다. 먼저 원본 컨테이너를 중지하고 삭제해야 합니다. 🎜rrreee🎜그런 다음 이미지를 다시 빌드하고 컨테이너를 실행하세요. 🎜rrreee🎜위 내용은 Docker 컨테이너 시작에 실패하는 몇 가지 일반적인 이유와 해결 방법입니다. 물론 Docker 컨테이너를 사용할 때 주의해야 할 세부 정보와 구성 옵션도 많이 있습니다. 독자들이 컨테이너 개발의 기본 기술을 익힐 수 있기를 바랍니다. 🎜

위 내용은 Docker 컨테이너를 시작할 수 없는 문제에 대한 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿