码头分离模式

什么是分离模式在码头世界? 我读了这篇文章 链接 ,但是它没有准确解释分离模式的含义。

57385 次浏览

您可以使用 -d选项在分离模式下启动一个 docker 容器。因此容器启动并在后台运行。这意味着,您可以启动容器,并在启动后使用控制台执行其他命令。

分离模式的对立面是前景模式。这是不使用 -d选项时的默认模式。在这种模式下,用于执行 docker run的控制台将附加到标准输入、输出和错误。这意味着您的控制台连接到容器的进程。

在分离模式下,您可以使用 docker logs -f <container_ID>来遵循码头容器的标准输出。

两个都试试。我总是使用分离模式来运行我的容器。我希望我能解释得更清楚一点。

docker run -d -t ubuntu:14.04

Docker run-从 docker 映像创建一个实例作为 docker 容器。 (如果图像在本地不可用,它从码头中心拉) 图像名称

14.04-标签

- 分离-分离模式

- T-分配一个伪 TTY

Docker 命令行上的 detach 选项指示 docker 客户端(docker)将向服务器发出请求(dockerd) ,然后当请求在服务器上继续时,客户端将退出。部分困惑可能是 docker 看起来像一个单独的进程,实际上它是一个客户机/服务器应用程序,其中客户机只是 REST API 上的一个薄前端,用于将每个命令发送到服务器。

使用 docker container run --detach,这意味着将创建容器,如果成功,服务器将响应一个容器 ID,并且容器将继续在服务器上运行,而您可以自由地运行其他命令。这通常用于服务器(例如 nginx) ,您希望在后台启动,同时继续运行其他命令。请注意,您仍然可以使用 --interactive-tty选项(通常缩写为 -it)配置容器,然后运行 docker container attach以连接到已经运行的容器。(注意,在附加到使用 -itd运行的容器之前,容器从 stdin 读取的任何尝试都会被挂起,而不会看到输入的结束,如果您刚刚通过了 -d,那么通常会触发立即退出。)

如果不使用分离选项运行,那么在创建容器之后,客户机将立即运行一个附加 API 调用,这样您就可以看到输出,并可以选择为容器上正在运行的进程提供输入。如果容器运行的是交互式的东西(例如 /bin/bash) ,这非常有用。

其他一些命令允许分离选项,包括 docker-compose up -d,它将启动整个项目,并让它在后台服务器上运行。还有许多 docker service命令,它们要么在向服务器提交更改后进行分离,以创建或更新服务的目标状态,要么如果不分离,客户端将等待,直到服务的当前状态与目标状态匹配,您可以看到部署的进度。注意,使用 docker service命令时,您可能必须通过 --detach=false才能保持连接,行为在过去一年中已经根据您的版本发生了变化。

码头世界中的分离模式是什么?

Detached意味着容器将在后台运行,而不连接到任何 inputoutput流。

  • Docker 提供 --detach(简称 -d)选项并在后台启动程序。
  • 这意味着程序已经启动,但没有连接到您的终端。
  • 示例 docker run --detach --name web nginx:latest # 注意分离标志。

为什么我们需要 --detach模式?

  • 服务器软件通常在 detached containers中运行,因为很少有软件依赖于附加的终端。
  • 运行分离的容器非常适合安静地放在后台的程序。

注意

  • 通常,这种类型的程序被称为 daemonservice。守护进程通常与其他程序(或通过网络的人员)或其他通信通道进行交互。当您在希望在后台运行的容器中启动守护进程或其他程序时,请记住使用 --detach标志或其简短形式 -d