Docker 容器试运行 hello Word
Docker 在容器内运行应用程序。在容器中运行程序需要一个命令:docker run。
你好,
我们现在就试试吧
$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
Hello world您刚刚运行了您的第一个容器!
所以发生了什么?我们来看看docker跑跑了哪些步骤。首先,我们指定要在 docker 二进制文件中执行的命令,run。 docker run 组合运行容器。
然后我们指定一个镜像:ubuntu 14.04。这是在我们的容器中运行的源。docker称之为镜像。在此示例中,我们使用 Ubuntu 14.04 操作系统映像。
当您指定一个镜像时,docker 会检查该镜像是否已加载到您的 docker 主机上。如果没有找到,docker会从镜像仓库Docker Hub下载公共镜像。
接下来,我们告诉 docker 在新容器中运行哪个命令:
/bin/echo 'Hello world' 当 docker 创建新的 Ubuntu 14.04 环境时,我们执行命令 /bin/echo。我们将在命令行中看到结果:
hello world那么,创建容器后会发生什么?这使得 Docker 容器能够在您键入命令时运行。只要这里打印“hello word”,容器就会停止。
交互式容器
让我们尝试再次运行docker run,这次指定一个新命令来运行我们的容器。
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#这里我们继续指定命令docker run,运行一个新的ubuntu:14.04镜像。但我们还添加了两个新符号:-t和-i。 -t表示在新容器中指定伪终端或终端,-i表示允许我们与容器中的STDIN进行交互。
还在我们的容器内指定了一个新命令:/bin/bash。这将在容器内启动 bash shell
。现在,当我们的容器启动时,我们将看到有一个提示:
root@af8bae53bdd3:/#让我们尝试在容器内运行一些命令:
root@af8bae53bdd3:/# pwd
/
root@af8bae53bdd3:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 您可以看到我们运行 pwd 以显示当前目录我们的根目录。我们还展示了目录列表并展示了目录列表。通过目录列表我们可以看到一个典型的Linux文件系统。
完成命令并退出容器后,您可以键入 exit。
root@af8bae53bdd3:/# exit与我们之前的容器一样,当 Bash shell 退出时,您的容器就会停止。
守护进程 Hello world
现在容器运行一个命令并在完成时退出,但这没有用。让我们创建一个容器并让它以守护进程模式运行,就像docker运行应用程序一样。
我们可以运行命令docker run:
$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147等待结果是什么?我们的问候语去哪儿了?让我们看看它是如何工作的。它看起来应该很熟悉,我们运行docker,但我们指定了一个 -d 徽标。 -d 标志告诉 docker 在后台模式下运行容器。
我们还指定了一个相同的镜像:ubuntu:14.04
最后我们指定了要运行的命令行:
/bin/sh -c "while true; do echo hello world; sleep 1; done"这是一个可笑的hello词过程:一个不断输出“hello”的脚本它并不多“hello”词“我们看到了吗?相反,docker 返回一个非常长的字符串:
1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147这个长字符串称为容器 ID。它是容器的唯一标识符,因此我们可以使用它。
注意:容器ID有点长而且很不方便。稍后我们将看到断点 ID,它在某些方面是容器 ID 的简化版本。
我们可以根据容器ID看到“hello word”进程发生了什么。
首先我们需要确保容器正在运行。我们可以使用命令docker ps来查看。 docker ps命令可以查询docker进程中的所有容器。
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e5535038e28 ubuntu:14.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute insane_babbage这里我们看到后台进程容器。命令 docker ps 返回一些有用的信息,包括短容器 ID:1e5535038e28。
我们还可以看到,我们使用 注意:docker 在启动时会自动为容器命名,稍后我们可以看到如何为容器指定名称。 好吧,现在我们知道它有效了。但我们还能要求什么呢?为此,我们需要在容器内使用命令 非常棒!我们创建的第一个后台应用程序进程正在运行! 现在我们可以创建自己的容器,在使用它之后,让我们停止这个后台进程容器。让我们停止使用命令 让我们通过运行命令 太好了,我们的集装箱停了。 现在我们已经看到了 docker 是多么容易,让我们学习如何执行一些更高级的任务。ubuntu:14.04来构建它,运行此命令并自动为其分配名称sinane_babbage。 docker Logs。让我们将此命令用于具有系统自动分配名称的容器。$ sudo docker logs insane_babbage
hello world
hello world
hello world
. . .docker logs 命令看起来想要在容器中运行并返回标准输出:在本例中,我们的命令输出 hello worddocker stop。命令 $ sudo docker stop insane_babbage
insane_babbagedocker stop 将通知 docker 停止正在运行的容器。如果成功,它将返回刚刚停止的容器的名称。 docker ps来检查它是否仍然有效。 $ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES后续步骤
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网