Docker 运行命令在 bash 脚本中不起作用

伊曼

尝试通过 bash 脚本运行 docker 容器。我需要容器在 bash 脚本中启动后立即启动和退出,以便我记录启动容器所花费的时间。图像是一个 tar 文件,使用保存和加载技术从另一台机器复制。可以使用 docker run -it imageId 命令从终端中的图像运行容器,但不能在 shell 脚本中运行。它显示错误“docker:Error response from daemon:OCI runtime create failed:container_linux.go 启动进程导致找不到可执行文件在 $PATH 中:未知。非常感谢帮助。谢谢

tl_start=$(date +%s)
docker load>alpine.tar
tl_end$(date +%s)
tl_load=$((tl_end-$tl_start))
image_id=$(docker images -a | awk '$2 ~/none/print{print $3}')
ts_start=$(date +%s)
docker run -i -d alpine:latest $image_id

看起来您使用的重定向不正确(docker load重定向到的输出alpine.tar):

docker load>alpine.tar

我建议您alpine.tar再次从另一台机器下载(因为它现在可能已损坏)然后使用docker load -i alpine.tar

由于图像未正确加载,它将解释为什么 create 命令失败且$image_id无效。我建议添加一个image_id正确设置的检查

仅在docker run返回外壳时测量容器的启动时间并不能真正测量启动时间。docker run文档:

--detach , -d       Run container in background and print container ID

这意味着它将在后台运行,并且仅仅因为它返回到 shell 并不意味着容器实际上已经完全启动并运行。

您还使用$image_id作为您正在启动的容器的名称,我猜您想使用您刚刚加载的实际图像启动一个容器。使用以下内容会更有意义:

docker run -i -d $image_id test_container

相反,我建议在 Dockerfile 中有一个HEALTHCHECKorENTRYPOINT指令,当它真正完全启动并运行时会打印一些东西。

可以通过将入口点脚本指定为 shell 来直接停止/退出容器,然后向该 shell 发送命令,在这种情况下exit

docker run -it -d --entrypoint=/bin/sh alpine:latest exit

在您的情况下,您可能应该使用$image_id而不是alpine:latest.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker Compose Bash命令在YAML中不起作用,但在容器中起作用

Bash脚本命令在cron中不起作用

一些命令在bash脚本中不起作用

CURL命令在bash脚本中不起作用

Bash 超时命令在脚本中不起作用

带变量的命令在bash脚本中不起作用

在zsh中运行bash脚本不起作用别名命令

在 docker bash 脚本中运行时找不到命令

在 bash 脚本中运行 docker 命令导致分段错误

为什么我的命令在shell脚本中不起作用,而在bash中起作用?

在bash文件中运行docker命令并使用crontab运行

在Docker中安装Rust工具链时,Bash`source`命令不起作用

从bash脚本运行docker命令会有不同的结果

crontab中的bash命令不起作用

Bash命令在Python中不起作用

退出命令在bash中不起作用

cp命令在azure devops的构建管道中的Bash脚本中不起作用

在Crontab中在Bash中运行Python脚本不起作用

Bash“文件--mime-type”命令在Perl脚本中不起作用

Bash命令在脚本中不起作用,但在控制台中

命令行上的Shell参数扩展在bash脚本中不起作用

一个bash脚本中的多个find -exec命令不起作用?

为什么此管道命令在这种特殊的bash脚本中不起作用?

在curl命令中使用变量在bash脚本中不起作用

在bash脚本中分组时Shell命令不起作用

通过SSH运行多行bash命令不起作用

Bash脚本运行参数不起作用的程序

从linux分区运行bash脚本,查找不起作用

从bash脚本运行`docker run`失败。命令在命令行上不会失败