• docker 的前台模式和后台模式


    Detached(后台模式) vs foreground(前台模式)

    当我们启动一个容器时,首先需要确定这个容器是运行在前台还是运行在后台。

    -d, --detach                      Run container in background and print container ID
    

    Detached (-d)

    如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口。但你可以通过执行docker attach来重新附着到该容器的会话中。需要注意的是,容器运行在后台模式下,是不能使用--rm选项的。

    Foregroud

    在前台模式下(不指定-d参数即可),Docker会在容器中启动进程,同时将当前的命令行窗口附着到容器的标准输入、标准输出和标准错误中。也就是说容器中所有的输出都可以在当前窗口中看到。甚至它都可以虚拟出一个TTY窗口,来执行信号中断。这一切都是可以配置的:

    -a, --attach value                Attach to STDIN, STDOUT or STDERR (default [])
    -t, --tty                         Allocate a pseudo-TTY
    --sig-proxy                   Proxy received signals to the process (default true)
    -i, --interactive                 Keep STDIN open even if not attached
    

    如果在执行run命令时没有指定-a参数,那么Docker默认会挂载所有标准数据流,包括输入输出和错误,你可以单独指定挂载哪个标准流。

    $ sudo docker run -a stdin -a stdout -i -t ubuntu /bin/bash
    

    如果要进行交互式操作(例如Shell脚本),那我们必须使用-i -t参数同容器进行数据交互。但是当通过管道同容器进行交互时,就不需要使用-t参数,例如下面的命令:

    echo test | docker run -i busybox cat
    
  • 相关阅读:
    软件工程(2018)第一次作业
    SQA计划
    再冲刺
    第三次冲刺
    第二次冲刺
    小组第一次冲刺
    团队合作初体验
    关于git的认识与想法
    我的第一篇博客
    SQA计划和系统测试规程
  • 原文地址:https://www.cnblogs.com/cag2050/p/10144874.html
Copyright © 2020-2023  润新知