zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    【idea-部署web项目】
    【IDEA下使用tomcat部署web项目】
    【 PLSQL Developer安装、tnsnames.ora配置 解答】
    【idea--git】
    【Sping管理bean的原理】
    【关于eclipse的一些自己常用的插件】
    【Spring-任务调度】
    【mysql存储引擎】
    【mysql-索引+存储过程+函数+触发器-更新。。。】
    【转-mysql-explain介绍】
  • 原文地址:https://www.cnblogs.com/cag2050/p/10144874.html
Copyright © 2011-2022 走看看