Rtmp failed under docker for windows

Expected behavior

Actual behavior

Information

When I try to run a Wowza service under docker I receive a message “Disconnected by server”.
I tried nginx with installed rtmp module, but the same message received.
I’m using Docker for Windows and also the latest Insider preview version of Windows 10.

Here is the output from docker logs:
[17:52:23.079][ProxyProcess ][Debug ] com.docker.slirp.exe: tcp:0.0.0.0:1935:tcp:172.18.0.3:1935: connected
[17:52:23.606][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.read: Unix.Unix_error(Unix.ECONNABORTED, “read”, “”)
[17:52:23.617][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.write: Unix.Unix_error(Unix.ECONNABORTED, “read”, “”)
[17:52:23.621][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.write: Unix.Unix_error(Unix.ECONNABORTED, “read”, “”)
[17:52:23.633][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.shutdown_write: got Eof
[17:52:23.644][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.write: Unix.Unix_error(Unix.ECONNABORTED, “read”, “”)
[17:52:23.645][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.shutdown_write: got Eof
[17:52:23.661][ProxyProcess ][Error ] com.docker.slirp.exe: tcp:0.0.0.0:1935:tcp:172.18.0.3:1935 proxy failed with flow proxy b: write failed with Eof
[17:52:23.677][ProxyProcess ][Error ] com.docker.slirp.exe: Hvsock.write: Unix.Unix_error(Unix.ECONNABORTED, “read”, “”)

Before I migrate to Docker for Windows and Insider preview versions everything works fine. Not sure if the problem is caused by Docker or Windows version.

Interesting!, thanks for reporting.

@ilianyotov do you have a way to reproduce the problem? (eg. docker run command or similar)

Sure.

Tested with this image: hub.docker.com/r/jasonrivers/nginx-rtmp/ ( skip http protocol because I’m a new user :smile: )

I can confirm that it works under Docker 1.11, but not works under 1.12 ( docker for windows ) on the same Windows ( tested at home under Win 10 Education edition )

I execute “docker run -p 1935:1935 -p 8080:8080 jasonrivers/nginx-rtmp” and try to broadcast with Open Broadcast Software with these settings:

Docker 1.12 for Windows:
Broadcast url: http://localhost:1935/live
Result: A message “Disconnected from server”

Docker 1.11 Toolbox:
Broadcast url: http://192.168.99.100:1935/live
Result: Successful connected

I experience the same issue when using php:5.6-apache image. When I make large HTTP POST requests to the container, it will just not respond at all, and I can see that error in the log file.

We’re investigating problems with the networking proxy - could you try using the docker hostname instead of localhost (it’ll work even if you have localhost mode turned on). What’s the software you’re testing with - can it run in a container? (I’m just trying to find a test-case that we can reproduce)

Using the docker hostname seems to be working.

Here is a very simple example to reproduce the error:
https://github.com/Sjark/dockerposterror

docker build -t dockerposterror .
docker run -d -p 8080:80 --name dockerposterror dockerposterror

Open your browser, go to http://127.0.0.1:8080
Fill in a lot of text in the text area, I tested with 15 paragraphs of Lorem Ipsum, and you should get ERR_EMPTY_RESPONSE or similar error.

I’m having similar error message in the log when using the elasticsearch image (Docker version 1.12.0-rc4, build e4a0dbc)

Happens when the a large POST request is made from the host to the container

Thanks the proxy networking bug was fixed here: https://docs.docker.com/docker-for-windows/release-notes/#/beta-21-release-2016-07-28-1-12-0-beta21