首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器对POSIX父-子进程关系透明吗?

容器对POSIX父-子进程关系透明吗?
EN

Unix & Linux用户
提问于 2018-07-20 20:37:46
回答 1查看 144关注 0票数 2

设想一个假设的shell,它在特设容器中启动所有命令,并根据每个命令的功能进行一些隔离和资源控制:

代码语言:javascript
复制
cat foo.txt | sed ... | xargs some-command

例如,每个命令都有一些内存限制,没有网络或只读安装的文件系统(S)。

这样的shell是否有可能以透明的方式实现,从而使进程不知道每个进程在容器中运行,并且可以使用UNIX管道、发送信号等等?

EN

回答 1

Unix & Linux用户

发布于 2018-07-20 23:16:19

如果我明白你在问什么,我不明白为什么这是不可能的,只要管道的不同边界的容器适当地吸收STDIN并通过STDOUT发射所有的东西。

你基本上是在问这个:

代码语言:javascript
复制
$ cat.txt |  |  | ...

这应该能行。

示例

在这里,我有一个码头容器,它只会运行这个脚本:

代码语言:javascript
复制
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
28c19c338e6e        sleeper             "/tmp/run.sh"       6 days ago          Up 4 minutes                            focused_lumiere

里面的剧本:

代码语言:javascript
复制
$ docker exec -it 28c19c338e6e cat /tmp/run.sh
#!/bin/bash

while true; do sleep 30; done

现在,如果我们要运行这样的命令:

代码语言:javascript
复制
$ docker exec -it 28c19c338e6e bash -c "echo hi" | \
  docker exec -i  28c19c338e6e bash -c "grep hi"
hi
$

如果我们去grep做其他的事情:

代码语言:javascript
复制
$ docker exec -it 28c19c338e6e bash -c "echo hi" | \
  docker exec -i  28c19c338e6e bash -c "grep bye"
$

这些docker命令中的每一个都在容器中运行各自的命令,但是它们通过STDIN/STDOUT传递输入/输出,其中包含我正在运行的Bash和管道。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/457537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档