3、深入理解 Docker:从基础到自定义镜像构建

深入理解 Docker:从基础到自定义镜像构建

1. Docker I/O 通道与交互式会话

Unix 进程有三个 I/O 通道,分别是标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。由于 Docker 守护进程在单独的进程中运行,Docker 需要主动将 CLI 输入转发给 Docker 守护进程。

默认情况下, docker run 仅将容器的输出转发给客户端。当运行不需要输入的容器时,这没问题。但有时我们运行的进程需要输入,例如交互式 Bash 会话,它会等待我们输入命令。这种情况下,我们需要显式告诉 Docker 将 CLI 输入转发给 Docker 守护进程,这可以使用 -i 选项来实现,“i” 代表输入。如果不指定该选项,容器将立即终止,因为 Bash 没有收到输入就会终止。

然而,仅使用 -i 选项是不够的。交互式 Bash 会话必须在终端模拟器中运行,该模拟器负责显示提示信息和解释转义序列(如 Ctrl - C)。默认情况下,启动容器运行 bash 处于非交互式模式,执行提供的命令,完成后就会终止。为了在 Docker 容器中实现长时间的交互式 Bash 会话,我们需要告诉 Docker 为我们设置一个位于 Bash 前面的终端模拟器(技术上是伪终端或 pty),这可以通过在 docker run 中指定 -t 选项来完成。

当需要长时间的交互式会话时,需要同时指定 -i -t 选项,它们通常组合成简写形式

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值