user guide指出图像应按如下方式运行:
docker run -t -i ubuntu /bin/bash
我知道 -t
创建了伪终端,而 -i
使它具有交互性。但似乎 /bin/bash
部分是不必要的。无论我在有或没有 /bin/bash
的情况下运行它,我都会得到一个交互式提示,我可以从这两个时间读取和写入。
root@77eeb1f4ac2a:/#
为什么我们需要 /bin/bash
?
第 2 部分
我在 Mac 版 Docker 上运行。当我下载 hello-world
二进制文件并运行它时,它只有 1kb
。显然,没有随它下载 Linux 镜像。小型 hello-world
二进制文件是在我的 Mac 内核上运行还是在 Docker for Mac 附带的小型 Linux 内核上运行?
最佳答案
Why do we need /bin/bash?
因为虽然 ubuntu
镜像可能配置为默认运行 /bin/bash
,但并非每个镜像都如此。如果您有一个默认启动网络服务器的图像,并且您想要运行 bash
...您需要明确说明。一些图像没有指定任何默认命令,导致:
$ docker run -it alpine
docker: Error response from daemon: No command specified.
在启动容器时,明确表示永远不会有坏处,尤其是使用不是您自己构建的图像。
When I download the hello-world binary and run it...
哪个 hello-world 二进制文件?
but is a VM of Linux executing it or is my mac executing it?
Docker 只能在 Linux 下运行。当您在 OS X 或 Windows 下使用 Docker 时,您是在 inside 由 docker-machine
(或以前的 boot2docker
)。在 Windows 下,Docker 使用 Hyper V,而在 OS X 上,它以前使用 VirtualBox,而在更新的版本中可能使用其他东西(自从我在 OS X 下运行 Docker 以来已经有一段时间了)。
关于linux - 运行 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39402200/