Docker教程:Daemonized容器closures – 语法错误

我一直在通过链接在这里的用户指南: Docker用户指南:容器 。 我在dockerterminal运行这个命令:

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

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

 $ docker ps -a 

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

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

运行命令而不尝试创build守护进程会产生类似的结果:

 $ 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 

我猜我的脚本中有一个语法错误,但我没有看到它。 任何build议表示赞赏。

( 这个问题有点类似,可能是相关的)。

编辑一些额外的信息:我在Windows 7中运行Docker,使用Docker快速入门terminal

编辑2下面接受的答案为我工作,除了我不得不附加“默认”的一些命令,指定我正在谈谈默认机器。

尝试用单引号代替:

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

注: 如上所述 :

当我尝试使用VirtualBox的控制台时,一切正常。

但是它总是在Windows的控制台中失败(使用Docker快速入门terminal)。

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

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

对于最近创build机器“ default ”的docker机器,您甚至不需要input任何内容(这里我使用dm作为docker-machine的别名):

dm ssh

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

单引号

您正在使用普通用户进行docker构build。

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

所以试试:

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