首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将` `docker run`命令输出存储在BASH变量中

问将` `docker run`命令输出存储在BASH变量中
EN

Stack Overflow用户
提问于 2015-03-16 03:22:36
回答 3查看 6.3K关注 0票数 9

我在将docker run -it -d -p 43211:3000 --name appname -h hostname -v $PWD/local_dir:/root/remote_dir repo/imagename的输出存储在BASH变量中时遇到问题。我试过backticks,我也试着像官方文档上说的BASH_VAR=$(docker run ...)那样运行它,我甚至试着用docker run --...>$FILE_DESCRIPTOR将输出存储在一个文件中,但没有成功地存储错误情况,即名称已被另一个容器使用的情况,如下所示:

$ FATA[0000] Error response from daemon: Conflict. The name "appname" is already in use by container 7c84d8d703c8. You have to delete (or rename) that container to be able to reuse that name.

我想说,它适用于成功的情况,所以在成功运行应用程序时,我能够在BASH_VAR中存储完整的容器ID,但不幸的是,这只解决了我面临的问题的一半。

任何帮助都将不胜感激。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2019-08-31 00:36:37

您需要的是捕获标准错误并将其存储在一个变量中。

使用

代码语言:javascript
复制
BASH_VAR=$(command)

或

代码语言:javascript
复制
BASH_VAR=`command`

将捕获标准输出,而不是标准错误。

这是在变量中存储标准错误消息的正确语法:

代码语言:javascript
复制
BASH_VAR=$( { command; } 2>&1 )
票数 4
EN

Stack Overflow用户

发布于 2017-12-02 01:57:10

您可以使用while循环在生成输出时读取输出的每一行,并以这种方式对其执行某些操作。

代码语言:javascript
复制
while read -r line_of_output; do
  echo "line: $line_of_output"

done < <(docker ... 2>&1)

此外,如果您正在编写交互式脚本,则可能需要查看select bash内建

代码语言:javascript
复制
$ help select
select: select NAME [in WORDS ... ;] do COMMANDS; done
     Select words from a list and execute commands.
票数 0
EN

Stack Overflow用户

发布于 2019-08-31 00:02:53

您可能需要打破while循环,但这是可能的,例如:

代码语言:javascript
复制
  MYSQL_IMAGE_NAME='mysql/mysql-server:5.7'
  docker pull "$MYSQL_IMAGE_NAME"
  docker images
  docker run --name=mysql-server-container -d "$MYSQL_IMAGE_NAME"
  docker container ls

  while read -r line ; do
     GENERATED_PWD="$(echo $line | grep 'GENERATED ROOT PASSWORD'|awk '{print $5}')"
     test -z $GENERATED_PWD || break
  done < <(docker logs --tail 3000 --follow mysql-server-container)
  echo "GENERATED_PWD: $GENERATED_PWD"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29065117

复制
相关文章

相似问题

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