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

Docker Tutorial: Daemonized Container Closes - Syntax Error

我一直在阅读此处链接的用户指南: 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

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

问题有些相似,可能相关)。

编辑一些附加信息:我在 Windows 7 中 运行 Docker,使用 Docker 快速启动终端

EDIT2 下面接受的答案对我有用,除了我必须将 "default" 附加到一些命令,以指定我正在与默认机器交谈。

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

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

所以尝试:

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

尝试使用单引号代替:

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

注:如:

When I try to use VirtualBox's console there is all fine.

But it always fail in windows's console (using Docker Quickstart Terminal).

I think the problem is about the end-of-line code (\n,\r or \r\n).

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

对于最近的 docker-machine,它创建了机器“default”,您甚至不必输入任何内容(这里我使用 dm 作为 docker-machine):

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