Jac*_*ere 8 logging lxc docker
动机:通过计算特定数量的消息在特定时间范围内流过stdout来对docker容器运行基本运行状况检查
直接目标:从启动的shell中docker exec,读取正在从主进程传输到stdout的数据(PID 1)
我甚至不确定我想要的是否可能.如果是这样的话,那么为什么不能得到解释将会非常感激 - 并且有助于提升我的知识.
重现步骤:
启动容器 - container1
docker run -it --name container1 ubuntu bash -c -i "COUNT=0; while true; do echo Keep the dance floor beat going; ((COUNT++)); sleep 1; echo \"Count is: \${COUNT}\"; done;"
在另一个终端窗口中,docker exec在同一容器中启动另一个进程
docker exec -it container1 bash
我可以通过PID 1 以某种方式tail/ print/ read通过stdout传递消息吗?
我知道有一些工作 - 例如通过管道tee或以其他方式写入磁盘 - 但希望有一个神奇的子弹.
如果您同意,strace请尝试以下操作:
docker exec -it container1 bash -c -i "\
apt-get update && apt-get install strace && \
strace -ff -e trace=write -e write=1 -p 1"
Run Code Online (Sandbox Code Playgroud)
-p 1是PID-e write=1是否可以将输出范围缩小到 STDOUT(-e write=1,2将显示 STDOUT 和 STDERR)根据 Docker 版本,您可能需要放松 Docker 的系统调用安全策略,例如通过在启动容器时添加--security-opt seccomp:unconfined以下内容来完全禁用它:docker run
docker run --security-opt seccomp:unconfined -it --name container1 ubuntu bash -c -i "COUNT=0; while true; do echo Keep the dance floor beat going; ((COUNT++)); sleep 5; ech o \"Count is: \${COUNT}\"; done;"
Run Code Online (Sandbox Code Playgroud)
在此处阅读有关 Docker 的 seccomp 配置文件的更多信息(>1.10)。
测试用:
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |