linux - 运行 Docker 镜像

标签 linux bash docker docker-for-mac

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 时,您是在 insidedocker-machine(或以前的 boot2docker )。在 Windows 下,Docker 使用 Hyper V,而在 OS X 上,它以前使用 VirtualBox,而在更新的版本中可能使用其他东西(自从我在 OS X 下运行 Docker 以来已经有一段时间了)。

关于linux - 运行 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39402200/

相关文章:

c - 将 memcpy 与 mmap 一起使用的问题

mysql - 为什么即使我从另一台服务器复制该表的所有文件,数据库表也没有更新?

linux - 如何使用 awk 提取 "second"值?

amazon-web-services - AWS Elastic Beanstalk Docker部署失败

linux - 如何正确配置 ssh proxycommand 以运行 docker exec?

linux - 在 Linux 中通过 TLS/SSL 进行 FTP 而无需安装外部包?

linux - Puppy Linux 编程语言问题

linux - 如何在 bash/zsh 中自动发出(新邮件)通知?

linux - netcat 连接成功后显示欢迎信息

networking - 如何从外部世界向 AWS EC2 机器内的 docker 容器内运行的 Web 服务器发送请求?