Docker:获取/打印正在运行的容器的ID
目标是从容器内的主机运行脚本setup-debian-server.sh
,并在没有错误的情况下提交图像。
这个东西将脚本行作为参数提供给bash
,并附加到hostname
以打印容器的ID。
它将parameter passing给脚本: --script-par1=abc
script --script-par1=abc
。
( did="$( docker run ubuntu:15.04 /bin/bash -c "$(<./setup-debian-server.sh); echo; hostname;" -- --script-par1=abc | tail -n1; exit ${PIPESTATUS[0]} )" && docker commit "$did" my/base )
问题是, setup-debian-server.sh
标准输出丢失。 而且总体上是丑陋的。
我玩过一些exec {FD}>&1
命令,但不能可靠地刷新stdout(我总是希望输出3行,但有时候是2):
(exec {FD}>&1 && /bin/bash -c "hostname; echo 123;" | tee /dev/fd/$FD | head -n1)
如何做这个简单的任务?