Docker分离模式

问题描述 投票:49回答:3

什么是docker世界中的分离模式?我读了这篇文章Link,但它没有解释究竟什么是分离模式。

docker
3个回答
103
投票

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

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

在分离模式下,您可以使用docker logs -f <container_ID>跟踪docker容器的标准输出。

试试两种选择。我总是使用分离模式来运行我的容器。我希望我能更清楚地解释一下。


13
投票

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

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

如果在没有detach选项的情况下运行,客户端将在创建容器后立即运行attach API调用,以便您可以看到输出并可选择为容器上的正在运行的进程提供输入。如果您的容器正在运行交互式(例如/bin/bash),这将非常有用。

其他几个命令允许分离选项,包括docker-compose up -d,它将启动整个项目并使其在后台运行在服务器上。还有许多docker service命令会在将更改提交到服务器以创建或更新服务的目标状态后分离,或者如果您不分离,客户端将等待服务的当前状态与目标状态匹配,您可以看到部署的进度。请注意docker service命令,您可能必须通过--detach=false保持附加,行为在过去一年中发生了变化,具体取决于您的版本。


-6
投票
docker run -d -t ubuntu:14.04

docker run - 从docker image创建一个实例作为docker容器。 (如果图像不在本地,它从docker hub拉出)ubuntu - 图像名称

14.04 - 标签

-d,--detach - 分离模式

-t, - tip - 分配伪TTY

© www.soinside.com 2019 - 2024. All rights reserved.