我觉得命令的--tty和--interactive开关之间有细微的区别docker run,我不明白:
--interactive, -i: 即使没有连接,也要保持 STDIN 打开--tty, -t: 分配一个伪 TTY所以我决定进行一些测试。
首先,我创建了一个基本的 Python 脚本,它连续打印一个字符串。
然后我创建了一个基本的 docker 镜像,它将在容器启动时运行这个脚本。
my_script.py
import time
while True:
time.sleep(1)
print('still running...')
Run Code Online (Sandbox Code Playgroud)
文件
FROM python:3.8.1-buster
COPY my_script.py /
CMD [ "python3", "/my_script.py"]
Run Code Online (Sandbox Code Playgroud)
使用命令构建:
docker build --tag pytest .
Run Code Online (Sandbox Code Playgroud)
测试 1
我运行docker run --name pytest1 -i pytest,以测试容器的交互行为。控制台没有打印任何内容,但是当我按下Control+Cpython 脚本时,该脚本被中断并且容器停止运行。
这证实了我认为标准输入在容器上打开并且我的键盘输入进入了容器的想法。
测试 2
我运行docker run --name pytest1 -t pytest,以测试容器的伪 tty 行为。它反复打印still running... …
使用-a标志声明bash数组的附加值是什么,如下所示:
与国旗
declare -a arr1
arr1[0]="array1-zero"
arr1[1]="array1-one"
echo ${arr1[0]}
echo ${arr1[1]}
Run Code Online (Sandbox Code Playgroud)
...如果省略该选项,行为是相同的,如下所示:
没有-a选项
declare arr2
arr2[0]="array2-zero"
arr2[1]="array2-one"
echo ${arr2[0]}
echo ${arr2[1]}
Run Code Online (Sandbox Code Playgroud)
关联数组(选项-A)也是如此.省略它会产生与提供它相同的结果.