Windows 용 Docker 실행, 포트 노출시 오류
Windows에서 Docker를 실행하는 데 많은 질문이 있다는 것을 알고 있지만이 질문은 Windows에서 새로운 Windows 용 Docker를 실행하는 것에 관한 것입니다.
제 경우에는 Windows 10 Pro 64 비트를 사용하고 있습니다. 사이트에 따르면이 버전이 지원되어야합니다.
나는 여기에서 찾은 튜토리얼을 따랐습니다 : https://prakhar.me/docker-curriculum/
당연히 공식 가이드를 따라 시도했습니다 : https://docs.docker.com/docker-for-windows/
두 자습서 모두 -P
매개 변수를 사용하여 포트를 할당하려고하거나 포트를 지정하려고 할 때 동일한 오류 메시지를받습니다 -p 8080:5000
.
공식 가이드에서 나는 다음을 실행합니다 docker run -d -p 80:80 --name webserver nginx
.
C : \ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe : 데몬의 오류 응답 : 드라이버가 엔드 포인트 웹 서버에서 외부 연결을 프로그래밍하지 못했습니다 (f9946544e4c6ad2dd9cb8cbccd251e4d48254e86562bd8e6da75c3bd42c7e45a) : userland 프록시 시작 오류 : mkdir /port/tcp:0.0.0.0 : 80 : tcp : 172.17.0.2 : 80 : 입력 / 출력 오류입니다.
비공식 가이드에 따라 실행 docker run -p 8888:5000 prakhar1989/catnip
하면 기본적으로 동일한 오류가 발생합니다.
C : \ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe : 데몬의 오류 응답 : 드라이버가 endpoint focus_swartz에서 외부 연결을 프로그래밍하지 못했습니다 (48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232) : userland 프록시 시작 오류 : mkdir /port/tcp:0.0.0.0 : 8888 : tcp : 172.17.0.2 : 5000 : 입력 / 출력 오류입니다.
포트를 할당하지 않으면 컨테이너가 실행되지만 액세스하는 방법을 모릅니다.
내가 실행중인 도커 버전 :
- Docker 버전 1.12.3, 빌드 6b644ec`
- docker-compose 버전 1.8.1, 빌드 004ddae`
- docker-machine.exe 버전 0.8.2, 빌드 e18a919`
어떤 도움이라도 대단히 감사하겠습니다. 감사합니다.
이것은 포트 번호 지정 충돌로 인해 발생합니다. github 문제는 여기 https://github.com/docker/compose/issues/3277입니다.
기본적으로 포트가 사용 중입니다! 재설정이 작동하는 이유는 다른 매핑이 지워졌 기 때문입니다.
여기에 새로운 반전이 있습니다.
지난 Windows 10 업데이트 (Fall Creators Update, 2017)에는 새로운 "기능"이 있습니다. 마지막으로 종료 할 때 실행 중이던 모든 응용 프로그램을 자동으로 시작합니다.
이렇게하면 Windows 용 Docker가 잘못된 상태로 재구성됩니다. 그것은 그 포트가 다른 무언가에 의해 사용되고있는 것처럼 보이게 만들었다. 그것은 그 자체의 유령이었다. 이것은 컨테이너를 중지 / 시작하고 재부팅하더라도 해당 포트가 여전히 사용중인 이유를 설명했습니다!
이 경우 해결책은 단순히 Docker 데몬을 다시 시작하는 것입니다.
다음 종료 후이를 방지하려면 종료 버튼을 사용하지 마십시오. 대신 다음을 입력하십시오.
shutdown /s /t 0
이것은 새로운 기능을 우회합니다.
이 스레드에서 Jason [MS]의 답변을 참조하십시오.
다음은 한 사람의 해결 방법입니다 (이 스레드의 끝에서-직접 시도하지 않았습니다).
http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/
Docker 데몬을 다시 시작하면이 문제가 일시적으로 해결되지만 궁극적으로 제거 하려면 @ biscuit314에서 설명한 기능인 Windows 10 빠른 시작 을 비활성화 해야했습니다 .
비활성화 윈도우 10 빠른 시작까지,에 도착 제어판 > 전원 옵션 > 선택의 전원 단추는 무엇을 > 현재 사용할 수없는 설정 변경 >을 선택 취소 빠른 시작 (권장)를 켭 와 충돌 변경 사항 저장을
1) 실행중인 모든 컨테이너 docker stop $(docker ps -a -q)
를 중지 한 다음
2) 컴퓨터에서 Docker를 중지하고 다시 시작하십시오.
그런 다음 필요한 명령을 실행하십시오. 이것은 문제를 해결할 것입니다.
Windows OS에있는 경우 Docker를 다시 시작하십시오. 이로 인해 문제가 해결되었습니다.
For Linux - Debian Users,
Use docker stop $(docker ps -a -q) only when you know whether you want to stop all the containers or not.... If yes then please run docker rm $(docker ps -a -q) to remove containers ....
Then stop the docker daemon - systemctl stop docker Then start docker daemon - systemctl start docker
Also verify whether docker daemon is up or not - service docker status
After following all above mention steps you should be fine.....
Try stopping docker and initiating it again on administrator mode. After it starts open power shell on administrator mode as well. Because the error says "mkdir" maybe this will solve your problem. Im not sure but it worked for me. In the case of using -P a port conflict does not seen to be the reason for the error once -P will chose ports randomly. The error it self wasn't quite friendly to me but because I saw the mkdir word on it I imagined it might be a permission error, thats why I restarted docker on administrator mode and started power shell on administrator mode.
I tried all the suggestions on this issue: killing all the containers, restarting Docker Desktop, disabling "Fast Startup," restarting my computer, making sure "Experimental Features" were disabled. None of that stuff worked.
나는 결국 그것을 실행했다. 다음은 시도해 볼 수있는 몇 가지 사항입니다 (실제로 수정 한 사항이 확실하지 않기 때문에).
- "Docker Desktop"을 찾아 마우스 오른쪽 버튼으로 클릭하여 "관리자 권한으로 실행 ..."
- 불평하는 항구에주의를 기울이십시오. 어떤 사람들은 이것이 Docker가 "그 포트가 사용 중"이라고 말하는 비우호적 인 방법 일 수 있다고 말합니다. 제 경우에는 포트가 80이었습니다. 안전을 위해 Windows Pro의 서비스에 들어가 "World Wide Web 게시 서비스"를 비활성화했습니다.
참고 URL : https://stackoverflow.com/questions/40668908/running-docker-for-windows-error-when-exposing-ports
'Development Tip' 카테고리의 다른 글
Spring Webservice의 START_ARRAY 토큰에서 개체의 인스턴스를 역 직렬화 할 수 없습니다. (0) | 2020.12.14 |
---|---|
MySQL Workbench 자동 증가 비활성화 (0) | 2020.12.14 |
C ++로 텍스트 파일을 읽는 가장 우아한 방법은 무엇입니까? (0) | 2020.12.14 |
StringBuilder : 최종 문자열을 얻는 방법? (0) | 2020.12.14 |
PHP에서 시간과 분 얻기 (0) | 2020.12.14 |