Intento obtener el resultado de un comando que estoy ejecutando dentro de un contenedor, pero hasta ahora solo lo obtengo en texto RAW. Necesito poder obtener la salida con PHP, parece que no puedo hacer eso cuando regresa en texto RAW.
Aquí está mi Dockerfile:
FROM phusion/baseimage:0.9.19 CMD ["/sbin/my_init"] WORKDIR /root RUN sed -i "s/^exit 101$/exit 0/" /usr/sbin/policy-rc.d RUN apt-get update RUN DEBIAN_FRONTEND="noninteractive" apt-get install -y \ nginx \ php-fpm php-mysql php-gd php-curl php-cli php-mbstring php-dom unzip RUN service php7.0-fpm start EXPOSE 80 RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*Y aquí están las solicitudes de curl que estoy ejecutando:
## Create container curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image":"test-container","Env":["VIRTUAL_HOST=test.domain.dev"]}' -X POST http:/v1.27/containers/create?name=test.domain.dev ## Start container curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -X POST http:/v1.27/containers/test.domain.dev/start ## Create exec instance curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{ "AttachStdin":false,"AttachStdout":true,"AttachStderr":true, "Tty":false, "Cmd":["/bin/bash", "-c", "date"] }' -X POST http:/v1.27/containers/test.domain.dev/exec ## Start exec instance curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{ "Detach": false, "Tty": false }' -X POST http:/v1.27/exec/bcd34186a9a7360809cace3674fec03bd1c70c1c453be24ad058a03fa0b0e960/start // Sun Mar 26 23:23:53 UTC 2017 Salida de docker info :
Containers: 8 Running: 4 Paused: 0 Stopped: 4 Images: 152 Server Version: 17.03.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 977c511eda0925a723debdc94d09459af49d082a runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70 init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 4.9.12-moby Operating System: Alpine Linux v3.5 OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.952 GiB Name: moby ID: JNZW:S7LC:4JRG:M3K3:6EFV:RZNR:Q7T5:XNJA:LB2Z:PO5G:PGPX:RI2E Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 43 Goroutines: 81 System Time: 2017-03-26T23:25:45.809302866Z EventsListeners: 2 No Proxy: *.local, 169.254/16 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: falseEntonces, ¿hay alguna forma adecuada de obtener este resultado? Gracias por cualquier ayuda
Configuré "AttachStdout" en verdadero y "Tty" en verdadero, cuando creo una instancia ejecutiva. En la solicitud de inicio ejecutivo, configuro "Tty" en verdadero.
Esto me muestra los valores en el tty pero no puedo capturarlo desde una aplicación.
# Create the exec # EXEC_CREATE=`curl --silent --unix-socket /var/run/docker.sock "http:/containers/${CONTAINER_NAME}/exec" -XPOST \ -H "Content-Type: application/json" \ -d '{ "AttachStdout": true, "Tty": true, "Cmd": [ "ruby", "-e", "5.times { puts :hi; sleep 1 }"] }' ` echo $EXEC_CREATE | jq '.' # Run the exec # EXEC_ID=$(echo $EXEC_CREATE | jq -r '.Id') curl --silent --unix-socket /var/run/docker.sock "http:/exec/${EXEC_ID}/start" -XPOST \ -H "Content-Type: application/json" \ -d '{ "Detach": false, "Tty": true }'