<div dir="ltr"><div><div><div><div>Hi,<br><br>I'm calling "docker run" from Erlang.<br><a href="http://docs.docker.io/en/latest/commandline/command/run/">http://docs.docker.io/en/latest/commandline/command/run/</a><br>
I'm using open_port instead of os:cmd to be able to limit the execution time.<br></div>I'm getting the output of the command<br>but the do_read just keep going and I'm not able to get an exit status from the command.<br>
<br></div>When running "echo 'test'" I'm getting {exit_status, 0}.<br></div>When running the "docker run" command in the shell, I'm getting the output and it exits.<br></div>When running any other docker command like "docker ps" I'm getting the exit signal.<br>
<div><div><div><div><div><br></div><div>Is this a problem with how I'm using open_port or something wrong with the "docker run" command?<br><pre>-module(test).

-export([run/0]).

run() ->
    Cmd = "sudo docker run ubuntu echo \"test\"",
    Port = open_port({spawn, Cmd}, [binary, exit_status]),
    do_read(Port, <<>>).

do_read(Port, Data) ->
    receive
        {Port,{data, NewData}} ->
            io:format("data ~p~n", [NewData]),
            do_read(Port, <<Data/binary, NewData/binary>>);
        {Port,{exit_status, 0}} ->
            io:format("exit~n"),
            case Data of
            <<"">> -> <<"ok">>;
            _ -> Data
        end;
        E ->
            io:format("Something: ~p~n", [E])
    end.</pre><br></div></div></div></div></div></div>