Is it possible to send string into running process inside docker container?

For example i have running docker container with cat (or other process using stdin) defined in CMD Dockerfile option.

I’m trying to send string test\n into running cat (or other process).

  • Is all WSO2 API Manager's configuration saved in the database?
  • How to point a Dokku app at the root domain of the dokku server
  • How to access Docker containers from within a Vagrant VM
  • Change the owner of a file in a running Docker container with an attached volume in Windows
  • Rubygems update fails on strange ruby versions
  • Passing environment variables through jar file which app uses
  • Is it possible to do this, or I need to find workaround?

    Sum up:
    I’m looking for something like
    echo 'test' | docker run -i --rm alpine command
    for running container.

  • Dokku/Docker, how to access file in file system of running container?
  • How to view php logs information with php docker container?
  • Script fails at build but works from Docker container
  • Docker - AWS - What do I need to do next?
  • docker run sed doesn't work
  • Docker swarm multiple managers and workers Vs
  • 3 Solutions collect form web for “Is it possible to send string into running process inside docker container?”

    You can pipe to stdin of the container’s process if you start the container with -i. For example;

    echo "foobar" | docker run -i --rm alpine cat
    

    Keep in mind, that this is done when starting the container. Your question mentioned cat, which is not a long running process, so the container will actually exit after cat completes.

    I solved it by simply pipeing stdin to docker attach, for example:


    $ docker run -i busybox sh -c "while true; do cat /dev/stdin; sleep 1; done;"
    test

    and in another term

    $ echo test | docker attach <containerId>

    Yes as an example see

    https://github.com/chilcano/docker-netcat

    you need to open a port, extract from the previous link

    $ docker run -d -t --name=netcat-jessie -p 8182:8182 -p 9192:9192/udp chilcano/netcat:jessie
    

    and now, you have some examples of communication using those ports
    send traces to open a TCP port

    $ ping 8.8.4.4 | nc -v 192.168.99.100 8182
    

    or send traces to an UDP port

    $ ping 8.8.8.8 | nc -vu 192.168.99.100 9192
    

    or send traces to an UDP port without netcat

    $ ping 8.8.4.4 > /dev/udp/192.168.99.100/9192
    

    and

    $ tail -f /opt/wiremock/wiremock.log | nc -vu 192.168.99.100 9192
    

    or send traces to a TCP port without netcat

    $ tail -f /opt/wso2esb01a/repository/logs/wso2carbon.log > /dev/tcp/192.168.99.100/8182
    

    or send traces to an UDP port without netcat

    $ tail -f /opt/wso2am02a/repository/logs/wso2carbon.log > /dev/udp/192.168.99.100/9192
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.