Shell 自动从 docker 容器分离

Shell is detached automatically from docker container

我正在使用 docker 在 macOS Apple Silicon M1 上开发一些东西。 (MacMini)

我确实关注了一些事情。

  1. docker pull官方ubuntu/focal
  2. 创建图像
docker create -it --mount type=bind,source=${HOME}/work/dev1,destination=/root/work/dev1 --name dev1 ubuntu:focal /bin/bash
  1. 创建容器并附加它
docker start -ia dev1

在此之后,我将此容器用于编码、运行 节点应用程序等。但是,当我将这个附加容器保持近 1 小时而没有任何输入时,它会自动分离并且我回到 macOS shell 提示符。

没有退出。如果命令 docker ps,容器仍然存在。

并且如果我命令docker attach dev1,我可以继续与容器shell交互。

不知道为什么会自动分离。我该如何预防?

虽然它并没有真正回答为什么和如何的问题,但感觉很期待评论。

如果你直接 运行 容器并使用 docker exec 附加到它,你会遇到同样的问题吗?

在第 2 步中,将 create 替换为 run,将 -ti 替换为 -d,将 运行 替换为分离,并将 /bin/bash 替换为tail -f /dev/null 所以你的进程 1 阻塞并且不会立即 return。

docker run -d --mount type=bind,source=${HOME}/work/dev1,destination=/root/work/dev1 --name dev1 ubuntu:focal tail -f /dev/null

docker exec -ti dev1 bash