实际上,docker run -dit(-itd)vs docker run -d之间有什么区别?

veh*_*kul 24 docker

我曾经docker run -it以交互方式启动容器并docker run -d在后台启动它们.这两个选项似乎是独家的.但是,现在我注意到docker run -dit(或docker run -itd)很常见.那么区别是什么呢?什么时候-it真的需要和-d

Raf*_*sin 27

是的,有时,-it甚至包括你也是必要的-d

  1. ENTRYPOINTbashsh

    docker run -d ubuntu:14.04会立即停止,导致bash无法找到任何伪终端分配.您必须指定-it以便bashsh可以将其分配给伪终端.

    docker run -itd ubuntu:14.04
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您希望nano将来使用任何容器,则必须指定-it图像的开始时间.否则你会收到错误.例如,

    docker run --name mongodb -d mongo
    docker exec -it mongodb bash
    apt-get update
    apt-get install nano
    nano somefile
    
    Run Code Online (Sandbox Code Playgroud)

    它会通过一个错误

    Error opening terminal: unknown.