运行 Docker 图片
Running Docker Image
user guide 声明图像应 运行 如下:
docker run -t -i ubuntu /bin/bash
我知道 -t
创建了伪终端,-i
使其具有交互性。但似乎 /bin/bash
部分是不必要的。无论我 运行 使用还是不使用 /bin/bash
,我都会得到一个交互式提示,我可以从这两个时间读取和写入。
root@77eeb1f4ac2a:/#
为什么我们需要 /bin/bash
?
第 2 部分
我 运行 正在 Docker 参加 Mac。当我下载 hello-world
二进制文件和 运行 它时,它只有 1kb
。显然 Linux 图像没有随它一起下载。小 hello-world
二进制文件 运行 是从我的 Mac 内核中删除还是从 Docker 为 Mac 附带的小 Linux 内核中删除?
第 1 部分:
无论您在 docker run -t -i ubuntu
之后传递什么,都是您的容器将 运行 执行的第一个命令。您可以尝试使用 /bin/bash、/bin/sh 甚至 echo hello
并查看实际效果。 Ubuntu 默认使用 bash,但其他容器根据其 Dockerfiles 使用其他命令。
第 2 部分:
当您 运行 hello-world 时,会从 hello-image 创建一个 docker 容器。容器 "include the application and all of its dependencies --but share the kernel with other containers, running as isolated processes in user space on the host operating system.".
具体来说,Hello-world 是从头开始创建的 https://hub.docker.com/_/scratch/。
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 时,您是 运行ning 容器 inside a Linux VM docker-machine
(或之前的 boot2docker
)为此目的而产生。在 Windows Docker 下使用 Hyper V,在 OS X 上它以前使用 VirtualBox 并且在更新的版本中可能使用其他东西(自从我 运行 Docker 下 OS X).
user guide 声明图像应 运行 如下:
docker run -t -i ubuntu /bin/bash
我知道 -t
创建了伪终端,-i
使其具有交互性。但似乎 /bin/bash
部分是不必要的。无论我 运行 使用还是不使用 /bin/bash
,我都会得到一个交互式提示,我可以从这两个时间读取和写入。
root@77eeb1f4ac2a:/#
为什么我们需要 /bin/bash
?
第 2 部分
我 运行 正在 Docker 参加 Mac。当我下载 hello-world
二进制文件和 运行 它时,它只有 1kb
。显然 Linux 图像没有随它一起下载。小 hello-world
二进制文件 运行 是从我的 Mac 内核中删除还是从 Docker 为 Mac 附带的小 Linux 内核中删除?
第 1 部分:
无论您在 docker run -t -i ubuntu
之后传递什么,都是您的容器将 运行 执行的第一个命令。您可以尝试使用 /bin/bash、/bin/sh 甚至 echo hello
并查看实际效果。 Ubuntu 默认使用 bash,但其他容器根据其 Dockerfiles 使用其他命令。
第 2 部分:
当您 运行 hello-world 时,会从 hello-image 创建一个 docker 容器。容器 "include the application and all of its dependencies --but share the kernel with other containers, running as isolated processes in user space on the host operating system.".
具体来说,Hello-world 是从头开始创建的 https://hub.docker.com/_/scratch/。
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 时,您是 运行ning 容器 inside a Linux VM docker-machine
(或之前的 boot2docker
)为此目的而产生。在 Windows Docker 下使用 Hyper V,在 OS X 上它以前使用 VirtualBox 并且在更新的版本中可能使用其他东西(自从我 运行 Docker 下 OS X).