docker exec command not executing in sh file

When running below command in command line(terminal) this gets executed fine:

$sudo docker exec -it 5570dc09b58 bash

But same results with :

  • How to serve static files from a Dockerized Python web app?
  • Elastic Search Multiple Publish Host
  • How to set up a Docker Swarm cluster with overlay network mode
  • MySQL Connection in Docker container
  • Zookeeper my ID not in the peer list
  • How to check if application has started inside container
  • FATA[0000] cannot enable tty mode on non tty input

    Error when running in a shell script file.

  • Cannot install inside docker container
  • Setup GitLab CI for Rails with npm
  • Creating a bootstrap Dockerfile that automatically exposes files to the host operating system
  • mounted directory on host does not work or access docker container
  • Play framework multiple ajax request
  • Docker native Windows support?
  • 2 Solutions collect form web for “docker exec command not executing in sh file”

    You are not running docker in a terminal, so you should remove -t from -it:

    sudo docker exec -i 5570dc09b58 bash
    

    See a more detailed answer here.

    Scripts may be forced to run in interactive mode with the -i option or with a #!/bin/bash -i header.

    So adding shebang to the script with -i option should work:

    #!/bin/bash -i
    
    docker exec -it ed3d9e46b8ee date
    

    Run the script as usual:

    chmod +x run.sh
    sudo ./run.sh 
    

    Output:

    Thu Apr  2 14:06:00 UTC 2015
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.