-c 是什么意思?

Gib*_*bbs 3 docker boot2docker

  docker run -d ubuntu:14.04 /bin/bash -c "while true; do echo hello world;done"

  docker run -d ubuntu:14.04 /bin/bash "while true; do echo hello world; done"
Run Code Online (Sandbox Code Playgroud)

我两个都试了。

在第 2 种情况下,容器立即停止。所以docker ps结果没有。而docker ps -a导致它。

在情况 1 中,docker ps列出容器。它没有停止。

那么 -c 标志有什么作用呢?

Bry*_*yan 5

bash手册页

bash 在调用时解释以下选项:

-c 字符串

如果存在 -c 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。

如果没有-c,则该"while true..."字符串将被视为bash要打开的文件名。


Qui*_*ert 5

-c标志告诉 Bash 下一个参数是要运行的命令字符串,而不是脚本的文件名。在第一种情况下,Bash 执行 后的下一个参数-c。在第二种情况下,如果-c没有传递该标志,Bash 会尝试运行一个名为 的脚本while true; do echo hello world; done,但找不到该脚本,因此它退出。

来自man bash

-c 字符串

如果存在-c选项,则从string读取命令。如果string之后有参数,它们将被分配给位置参数,从$0开始。