什么是分离模式在码头世界? 我读了这篇文章 链接 ,但是它没有准确解释分离模式的含义。
您可以使用 -d选项在分离模式下启动一个 docker 容器。因此容器启动并在后台运行。这意味着,您可以启动容器,并在启动后使用控制台执行其他命令。
-d
分离模式的对立面是前景模式。这是不使用 -d选项时的默认模式。在这种模式下,用于执行 docker run的控制台将附加到标准输入、输出和错误。这意味着您的控制台连接到容器的进程。
docker run
在分离模式下,您可以使用 docker logs -f <container_ID>来遵循码头容器的标准输出。
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
dockerd
使用 docker container run --detach,这意味着将创建容器,如果成功,服务器将响应一个容器 ID,并且容器将继续在服务器上运行,而您可以自由地运行其他命令。这通常用于服务器(例如 nginx) ,您希望在后台启动,同时继续运行其他命令。请注意,您仍然可以使用 --interactive和 -tty选项(通常缩写为 -it)配置容器,然后运行 docker container attach以连接到已经运行的容器。(注意,在附加到使用 -itd运行的容器之前,容器从 stdin 读取的任何尝试都会被挂起,而不会看到输入的结束,如果您刚刚通过了 -d,那么通常会触发立即退出。)
docker container run --detach
--interactive
-tty
-it
docker container attach
-itd
如果不使用分离选项运行,那么在创建容器之后,客户机将立即运行一个附加 API 调用,这样您就可以看到输出,并可以选择为容器上正在运行的进程提供输入。如果容器运行的是交互式的东西(例如 /bin/bash) ,这非常有用。
/bin/bash
其他一些命令允许分离选项,包括 docker-compose up -d,它将启动整个项目,并让它在后台服务器上运行。还有许多 docker service命令,它们要么在向服务器提交更改后进行分离,以创建或更新服务的目标状态,要么如果不分离,客户端将等待,直到服务的当前状态与目标状态匹配,您可以看到部署的进度。注意,使用 docker service命令时,您可能必须通过 --detach=false才能保持连接,行为在过去一年中已经根据您的版本发生了变化。
docker-compose up -d
docker service
--detach=false
码头世界中的分离模式是什么?
Detached意味着容器将在后台运行,而不连接到任何 input或 output流。
Detached
input
output
--detach
docker run --detach --name web nginx:latest
为什么我们需要 --detach模式?
detached containers
注意
daemon
service