Hej,
Potrzebuję w swoim projekcie wrzucić dodatkowy strumień stdio.
Dla przejrzystości, przygotowałem przykład:
app.c
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[]){
char buf[] = "Win!\n";
(void)write(3, buf, strlen(buf));
return 0;
}
Program ten wypisuje tekst nie na stdout(1), nie na stderr(2), tylko na deskryptor nr. 3.
Przykład:
$ gcc -o app app.c
$ ./app
$ ./app 3>&1
Win!
Potrzebuję teraz taki program odpalić przez dockera
Dockerfile
# docker build -t test .
# docker run -i test
FROM debian:stretch
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get -y install build-essential
WORKDIR /home
COPY app.c ./
RUN gcc -o app app.c
ENTRYPOINT ["./app"]
Po zbudowaniu docker build -t test .
i odpaleniu:
$ docker run -i test
$ docker run -i test 3>&1
Niestety cisza.
Co muszę dodać do dockerfila, czy do argumentów dockera, aby ten przekazywał strumień?
Wszystkie pozostałe strumienie (stdin, stdout, stderr) działają, a ten nie :(
$ docker --version
Docker version 18.06.1-ce, build e68fc7a