vehsakul
vehsakul

Reputation: 1158

Practically, what is the difference between docker run -dit(-itd) vs docker run -d?

I've used docker run -it to launch containers interactively and docker run -d to start them in background. These two options seemed exclusive. However, now I've noticed that docker run -dit (or docker run -itd) is quite common. So what is the difference? When -it is really needed together with -d?

Upvotes: 55

Views: 29289

Answers (1)

Rafaf Tahsin
Rafaf Tahsin

Reputation: 8626

Yes, sometimes, it's necessary to include -it even you -d

  1. When the ENTRYPOINT is bash or sh

    docker run -d ubuntu:14.04 will immediately stop, cause bash can't find any pseudo terminal to be allocated. You have to specify -it so that bash or sh can be allocated to a pseudo terminal.

     docker run -dit ubuntu:14.04
    
  2. If you want to use nano or vim with any container in the future, you have to specify -it when the image starts. Otherwise you'll get error. For example,

     docker run --name mongodb -d mongo
     docker exec -it mongodb bash
     apt-get update
     apt-get install nano
     nano somefile
    

    It will throw an error

    Error opening terminal: unknown.

Upvotes: 67

Related Questions