Docker 由 运行 命令加载但无法访问控制台

Docker Loaded by run command but can't access console

我构建了一个 Dockerfile 构建命令成功的地方

sudo docker build --network=host -t nid-robotic-server .

但是当我尝试 运行 文件

docker run -it nid-robotic-server

它突然退出了。

rafa@ace:/home/automation$ docker run -it robotic-server
8:C 02 Dec 2018 11:39:05.871 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8:C 02 Dec 2018 11:39:05.871 # Redis version=5.0.2, bits=64, commit=00000000, modified=0, pid=8, just started
8:C 02 Dec 2018 11:39:05.871 # Configuration loaded
rafa@ace:/home/automation$

谁能帮我解决这个问题?这将是一个很大的帮助。

docker run -it --entrypoint="/bin/sh" nid-robotic-server

docker run -it --entrypoint="/bin/bash" nid-robotic-server

应该适合你。

这取决于您如何在 docker 文件中配置 ENTRYPOINTCMD。如果您将 shell 以外的其他内容定义为入口点,您将无法以交互方式 "simply" 运行 您的容器,您需要首先使用 --entrypoint 覆盖入口点。

如果您打算 运行 将您的图像设置为 dameon,则为入口点设置 shell 以外的其他内容完全没问题,甚至是很好的做法(这是 docker 的常见情况).

有关详细信息,请参阅 https://docs.docker.com/engine/reference/builder/#entrypoint

当 docker 是 运行ning 时,您没有任何要执行的任务。您以错误的方式使用入口点。 --daemonized 之类的任务将在后台 运行。 检查您的 Dockerfile,启动 docker 时不会执行任何任务。

至少在您的 docker 文件末尾添加此部分:

CMD ["/bin/sh"]

然后通过 运行 宁此命令,您将被丢弃在 sh shell of docker.

docker run -it --entrypoint="/bin/sh" nid-robotic-server