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 do you set encrypted Travis env variables in docker?
  • Connection fail for Apache LDAP Authentication
  • Docker-Compose HAProxy missing frontend
  • HTTPS on Elastic Beanstalk (Docker Multi-container)
  • Portainer not able to list the running containers on Rancher OS
  • Persistent Storage with Docker in Production - Which Solution and Why? [closed]
  • FATA[0000] cannot enable tty mode on non tty input

    Error when running in a shell script file.

  • Cant get docker run -v to work
  • Docker, install postgresql in a container contain “ubuntu:14.04”, lost when out of the container
  • Postgres to Ubuntu Docker container linking not working
  • Specify the env file docker compose uses
  • Use multiple images in Dockerfile
  • How to configure /etc/hosts to test local Docker setup
  • 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.