Docker教程:守护程序容器关闭 - 语法错误

时间:2016-01-27 02:08:57

标签: shell docker syntax-error ubuntu-14.04

我一直在处理此处链接的用户指南: Docker User Guide: Containers。  我在docker终端中运行了这个命令:

$ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

这应该创建一个在后台运行的容器。但是,当我查看它是否正在运行时,使用:

$ docker ps -a

它显示容器已创建但已停止运行。 容器的日志包含以下内容:

true;: 1: true;: Syntax error: end of file unexpected

在不尝试创建守护程序的情况下运行命令会产生类似的结果:

$  docker run ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
true;: 1: true;: Syntax error: end of file unexpected

我猜我的脚本中存在语法错误,但我没有看到它。任何建议都表示赞赏。

This问题有点相似,可能是相关的。)

编辑一些其他信息:我使用Docker Quickstart终端在Windows 7中运行Docker

EDIT2下面接受的答案对我有用,除了我必须在许多命令中添加“default”,以指定我正在与默认机器通话。

2 个答案:

答案 0 :(得分:1)

请尝试使用单引号:

docker run -d ubuntu:14.04 /bin/sh -c 'while true; do echo hello world; sleep 1; done'

注意:mentioned here

  

当我尝试使用VirtualBox的控制台时,一切都很好。

     

但它总是在Windows控制台中失败(使用Docker Quickstart Terminal)。

     

我认为问题在于行尾代码(\n\r\r\n)。

首先尝试ssh到docker机器(docker-machine ssh $(docker-machine ip <machine_name>)),然后再试一次。

对于最近创建机器&#39; default&#39;的码头工具机,您甚至不必输入任何内容(此处我使用dm作为别名为docker-machine):

dm ssh

然后该命令使用单引号或双引号:

single quotes

答案 1 :(得分:0)

您正在使用普通用户进行泊坞窗构建。

对于shell脚本,您应该使用root帐户。

所以试试:

sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"