>  기사  >  운영 및 유지보수  >  Docker가 성공적으로 생성되었지만 연결할 수 없는 경우 어떻게 해야 합니까?

Docker가 성공적으로 생성되었지만 연결할 수 없는 경우 어떻게 해야 합니까?

PHPz
PHPz원래의
2023-04-18 09:05:431553검색

작성:
이 글은 주로 Docker를 생성했지만 연결이 실패하는 이유와 해결 방법에 대해 설명합니다. Docker 초보자를 위한 실용적인 글입니다. 이 문서의 작업 및 솔루션은 Ubuntu 시스템 환경을 기반으로 합니다.

Docker를 사용하는 과정에서 컨테이너가 성공적으로 생성되었음에도 연결이 되지 않는 경우가 있습니다. 이러한 상황은 종종 사람들을 매우 괴로워하게 만들고 문제를 찾을 수 없게 만듭니다. 이 글에서는 Docker가 성공적으로 생성되었으나 연결이 되지 않는 이유와 해결 방법을 실제 사례를 통해 설명하겠습니다.

사례 설명:

Docker를 사용하여 로컬 컴퓨터에 nginx 컨테이너를 생성했지만 액세스할 때 성공적으로 연결할 수 없었습니다.
단계는 다음과 같습니다.

  1. Ubuntu 시스템에 docker 설치

명령줄에 다음 명령을 입력하세요.

sudo apt-get install docker.io

설치가 완료된 후 다음 명령을 사용하세요. docker를 시작하려면:

sudo systemctl start docker

  1. Create nginx 컨테이너 on docker

명령줄에 다음 명령을 입력하세요.

sudo docker run --name mynginx -p 80:80 -d nginx

This 명령의 의미: nginx 이미지를 사용하여 nginx 컨테이너 만들기 이름이 mynginx인 새 컨테이너는 포트 80을 로컬 포트 ​​80에 매핑하고 백그라운드에서 실행됩니다.

  1. 컨테이너가 성공적으로 생성되었는지 확인하세요

명령줄에 다음 명령을 입력하세요.

sudo docker ps

다음 내용이 표시되면 컨테이너가 성공적으로 생성된 것입니다.

CONTAINER ID IMAGE COMMAND CREATED STATUS 포트 이름
aaed7c1bcccf nginx "/ docker-entrypoint.…" 21초 전 최대 20초 0.0.0.0:80->80/tcp mynginx

  1. 브라우저에서 nginx

방문 브라우저에 localhost 입력 또는 127.0 .0.1. nginx 환영 인터페이스를 참조하세요.

그러나 nginx에 접근할 수 없는 상황이 있습니다.

문제 분석:

먼저 문제가 어디에 있는지 확인해야 합니다.

  1. 시스템 방화벽 구성 보기

Ubuntu 시스템의 기본 방화벽 도구는 ufw입니다. 다음 명령을 사용하여 구성을 볼 수 있습니다.

sudo ufw status

출력이 다음과 같다면 시스템 방화벽이 켜져 있습니다:

상태: 활성

To                                                         허용 > 시스템 방화벽을 통해 포트 80이 허용되었는지 확인해야 합니다. 위 출력에서 ​​볼 수 있듯이 포트 80에는 액세스가 허용되었으므로 이는 문제가 되지 않습니다.


네트워크 연결 상태


ping 명령을 사용하여 127.0.0.1의 네트워크 연결 상태를 확인하면 다음과 같은 오류 메시지가 나타납니다.

ping: connect: Network is unreachable

    이는 네트워크가 연결되지 않았음을 의미합니다. 연결 문제는 여기에 있습니다. 계속해서 원인을 조사해 보세요.
로컬 네트워크 주소가 맞나요?

nginx 컨테이너의 로컬 네트워크 주소에 연결해 보세요. 컨테이너를 생성할 때 포트 80을 로컬 포트 ​​80으로 매핑했기 때문입니다. 액세스할 컨테이너의 네트워크 주소입니다. 다음 명령을 사용하여 로컬 컨테이너 주소를 볼 수 있습니다.

sudo docker inform mynginx | ​​​​grep IPAddress

    응답 결과는 다음과 유사해야 합니다.
  1. "IPAddress": "172.17.0.2",

브라우저에서 172.17.0.2에 접속하면 nginx 웰컴 페이지를 볼 수 있습니다. 이는 현재 포트 매핑 및 방화벽 규칙이 정확하다는 의미입니다. 문제는 로컬 네트워크 주소 설정에 있습니다.

해결책:

nginx 구성 파일을 수정하고 구성 파일에 서버 노드를 추가합니다. 호스트 이름은 다음과 같이 로컬 IP 주소입니다.

server {

listen 80 default_server;
listen [::]:80 default_server;

server_name localhost;

root /var/www/html;
index index.html index.htm;

location / {
    try_files $uri $uri/ =404;
}

# 新增的本机IP节点
server {
    listen 80;
    listen [::]:80;

    server_name <本机IP>;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

}

수정이 완료된 후 nginx를 다시 로드하세요. 구성 파일:

sudo nginx -s reload

localhost 또는 127.0.0.1을 다시 방문하면 브라우저에서 nginx 환영 페이지를 볼 수 있습니다.

요약:

Docker가 성공적으로 생성되었으나 연결되지 않는 문제는 네트워크 연결 상태, 시스템 방화벽 구성, 로컬 네트워크 주소 설정 등과 관련이 있을 수 있습니다. 문제를 해결하고 적절한 해결책을 취하면 문제가 원활하게 해결될 수 있습니다. 앞으로 docker를 사용할 때 문제가 발생하더라도 당황하지 말고, 진정하고 로그를 주의 깊게 확인하여 문제를 파악한 다음 솔루션을 공식화해야 합니다. 그래야만 docker 기술을 더 잘 익히고 개발 효율성을 높일 수 있습니다. .

위 내용은 Docker가 성공적으로 생성되었지만 연결할 수 없는 경우 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.