Docker Toolbox-Localhost가 작동하지 않음


101

그래서 저는 Windows 10 pro가 아니기 때문에 컴퓨터에 Hyper-V가 없기 때문에 Docker Toolbox를 사용하고 있습니다. 모든 것이 제대로 작동하는 것 같지만 브라우저로 이동하려고 0.0.0.0:80하면 항상 나를 반환합니다.이 사이트에 연결할 수 없습니다.

그러나 명령을 실행하면 docker container ps다음 0.0.0.0:80->80/tcp이 표시됩니다.이 주소가 작동해야 함을 의미합니다. 나는 stackoverflow 및 github 문제를 검색했습니다. 이제 막혔습니다.

내가 뭔가를 놓치고 있습니까?

고마워, 마크

편집하다:

사용하면 docker-machine ip default나를 반환합니다 192.168.99.100. 포트 80에서 실행합니다. 주소가 컨테이너 ID가된다는 점을 제외하면 여전히 동일한 결과를 얻습니다.https://fd677edg12

cmd에서 해당 명령을 실행하여 ipv4 : cmd /k ipconfig /all. 결과를 포트와 함께 넣으면 동일한 결과가 반환됩니다.https://fd677edg12


1
0.0.0.0은 실제 주소가 아니며 포트가 모든 도커의 호스트 (Windows 컴퓨터) 인터페이스에 바인딩되었음을 의미합니다. localhost : 80 또는 컴퓨터의 IP 주소를 시도해보십시오. 80
fvu

@fvu 여전히 "이 사이트에 연결할 수 없습니다"라는 메시지가 나타납니다. 나는 또한 시도했다 docker-machine default ip -> 192.168.99.100그래서 나는 이것을 주소에 넣었다 : 192.168.99.100:80나는 여전히 같은 결과를 얻는다.
Mark

1
리디렉션되는 경우-앱이 손상되었습니다. docker가 동일한 컴퓨터에서 실행되고 있다고 가정하면 localhost : 80
user2105103 2017 년

답변:


179

Docker Toolbox는 Windows 용 Docker만큼 편리하지는 않지만 Home Edition을 사용하고 있기 때문에 올바르게 사용하고 있습니다.

도구 상자에서 아무 것도 없을 것 localhost등이 될 것이다 192.168.99.100는 버추얼 박스에서 리눅스 VM을 실행중인 때문에, 기본적으로.

따라서 실행하면 docker run -p 80:80 nginx

( 192.168.99.100해당 포트에서 수신하려면 포트를 게시해야했습니다. )

그럼 http://192.168.99.100작동해야합니다.


응답 해 주셔서 감사합니다. 추가 된 것을 제외하고 귀하의 단계를 따르고 있습니다 docker run -p 80:80 -d nginx. 주소로 이동하면로 리디렉션됩니다 https://dev/. 다시 사이트에 연결할 수 없다는 메시지가 표시됩니다. 나는 또한 hosts파일 이 있는지 확인하고 싶었습니다 (하지만 localhost는 아님). 나는 거기에 모든 것을 언급했다.
Mark

몇 번의 시도 끝에 마침내 작동했습니다. 슬프게도 문제가 뭔지 잘 모르겠습니다.
Mark

1
보너스 정보 : Docker Toolbox (Windows 7, 8, 8.1 및 10 Home에서 사용됨)는 실제로 docker-machinecli를 둘러싼 시작 스크립트 입니다. docker-machine --help를 사용하여 VirtualBox VM을 관리 (또는 더 생성)하기 위해 수행 할 수있는 작업을 볼 수 있습니다 .
Bret Fisher

64

DockerToolBox 및 OracleVM VirtualBox를 사용하는 동안 localhost : 8080에서 내 애플리케이션에 액세스하는 데 처음에는 몇 가지 문제가있었습니다.

VirtualBox에서 :

  1. 적절한 컴퓨터를 클릭합니다 (아마도 "기본값"이라고 표시된 컴퓨터).
  2. 설정
  3. 네트워크> 어댑터 1> 고급> 포트 전달
  4. 새 규칙을 추가하려면 "+"를 클릭하십시오.
  5. 호스트 포트 8080및 게스트 포트 설정 8080; 호스트 IP와 게스트 IP를 비워 두어야합니다.

다음 명령을 실행하십시오.

docker run -p 8080:8080 ${image_id}

원격 API의 CORS 설정으로 인해 localhost : 8080으로 실행해야합니다. 아주 간단합니다. 감사합니다!
phazei

1
놀랄 만한. 어디에서나 할 수 없다고 말하지만 여기 있습니다.
superPhreshHackerKid

또한, 이미이 포트에서 듣고있는 다른 항목이나 호스트 파일 ( C:\Windows\System32\drivers\etc\hosts)의 localhost / 127.0.0.1 항목을 엉망으로 만들지 않도록하십시오.- 나에게 작동하기 전에 둘 다 확인해야했습니다 ;-)
msa

매력처럼 일했다!
Daggie Blanqx-Douglas Mwangi

43

https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell 에서 Windows 자습서에 대한 docker를 따르고 웹 브라우저에서 nginx를 테스트 할 때 # 6 단계에서 멈췄습니다. . Windows Home도 사용하고 Hyper-V가 없기 때문에 비슷한 문제에 직면 한 것 같습니다. 내 해결 방법은 매우 간단합니다.

  1. 도커 IP 기본값 확인

$ docker-machine ip 기본값

192.168.99.100

  1. Oracle Virtual Machine으로 이동하여 포트 전달을 설정합니다. 네트워크 설정이 NAT인지 확인하고 포트 전달을 추가합니다. 호스트 IP : 127.0.0.1, 고객 IP : 192.168.99.100, 80 포트 모든 설정 이 같은

  2. 브라우저에 다시 시도하고 http : // localhost 또는 http://127.0.0.1을 실행 합니다 (포트 80도 추가 할 수 있음). 실행되어야합니다.

문제는 nginx IP가 도커 가상 머신 내에서 액세스 할 수 있도록되어 있으므로 호스트 머신의 브라우저에서 직접 액세스하려면 해당 포트 포워딩 설정이 필요합니다.


2
HOST:CONTAINER포트가 다른 경우가 필요했습니다 docker run --detach --publish 8081:80 --name webserver nginx. 이 경우 HOST에는 VirtualBox 설정에서 포트만 전달해야합니다 Host IP=127.0.0.1. Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, 80이전에 예상했던대로가 아닙니다 . 외모는 앞으로 컨테이너 포트에서 부두 노동자 도구 상자 도커 내 윈도우 7 컴퓨터에서 좋아 80하는 192.168.99:8081과에서 앞으로 I 192.168.99:8081localhost:8081있기 때문에 192.168.99:8081웹 브라우저에서 아무것도 표시되지 않습니다.
and1er

13

localhost지침에 따라 '192.168.99.100'대신 사용할 수 있습니다 .

단계 # 01 :

docker-machine ip default

기본 IP가 표시됩니다.

2 단계 :

docker-machine stop default

단계 # 03 :

  1. VirtualBox Manager를 엽니 다 (Windows의 시작 프로그램에서 VirtualBox Manager).
  2. Docker Machine VirtualBox 이미지를 선택합니다 (예 : 기본값).
  3. 설정-> 네트워크-> 고급-> 포트 포워딩을 엽니 다.
  4. 앱 이름, 원하는 호스트 포트 및 게스트 포트를 추가합니다. i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

단계 # 04 : 이제 다음을 실행하여 Docker Machine을 시작할 준비가되었습니다.

docker-machine start default

그런 다음 Docker 컨테이너를 시작하면 localhost를 통해 액세스 할 수 있습니다.

자세한 내용 은 여기 를 참조하십시오.


2

localhostdocker-machine IP에 직접 연결 하는 대신 예상되는 포트를 매핑하려면 VirtualBox CLI를 사용할 수 있습니다.

docker-machine VM (여기서는 default)이 실행중인 경우 다음과 같은 규칙을 추가하고 삭제합니다.

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

VM이 실행되고 있지 않거나 변경하기 전에 중지하려는 경우 :

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

포트 전달 규칙의 형식은 [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

VirtualBox에서는 내부 컨테이너 포트가 아닌 Docker 맵 의 호스트 포트에 매핑하려고합니다 . 호스트-> VM을 매핑 한 다음 Docker는 VM-> 컨테이너를 매핑합니다.

VirtualBox 문서를 참조하십시오 .


1

이것은 ip 192.168.99.100을 입력하지 않는 또 다른 쉬운 방법입니다. 이동 C:\Windows\System32\drivers\etc\hosts하여 파일 끝에 추가하십시오.

192.168.99.100 docker.awesome 또는 원하는 이름.

파일을 저장합니다 (관리자 권한이 필요하므로 파일을 마우스 오른쪽 버튼으로 클릭하고 파일을 편집 할 때 저장할 수 있도록 관리자 권한으로 실행해야합니다).

이 경우 선택한 도메인 이름 인 docker.awesome : 8080 으로 이동하면 거기에 있습니다.


0

많은 시련 끝에이 게시판을 얻을 수있었습니다.

  1. 내가 사용한 docker run 명령-docker run -p 4680 : 8080 --name bb bulletinboard : 1.0 여기서 4680은 localhost 포트 번호입니다. 8080은 컨테이너가 수신 할 포트 인 컨테이너 포트 번호입니다. 이 포트 번호는 Dockerfile의 EXPOSE 명령에 언급되어 있습니다.

  2. 그런 다음 웹 브라우저로 이동하여 192.168.99.100:4680을 입력하십시오.

여기에서 192.168.99.100은 도커 머신 IP 주소입니다 (명령어-> docker-machine ip 사용).

  1. 그 후에 브라우저 페이지가 다음과 같이 열립니다.

여기에 이미지 설명 입력

이것이 여러분 모두에게 도움이되기를 바랍니다 !!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.