Docker: 启动后保留Ubuntu容器运行?
Docker: Keep Ubuntu container running after starting?
我正在尝试使用 ubuntu
图片开始 docker container
:
docker container run -d --name ubuntu_assignment_4 6e4f1fe62
然而,一旦我启动容器,它就会再次停止。
为什么会发生这种情况,如何确保容器保持 运行ning?
我在这里 运行 尝试的图片是:ubuntu:14.04
如果没有看到用于构建图像的完整 Docker 文件,我无法确切地说出发生了什么,但我很确定你遇到的麻烦只是因为无论任务是什么在容器内开始正在完成和退出。
Docker 容器通过分配一些命令来工作(使用 Docker 文件中的 ENTRYPOINT
或 CMD
指令,或作为 docker start
的参数或命令行上的 docker run
)这是容器加载时启动的程序。只要该任务继续 运行,容器就会一直存在,一旦该程序完成,容器就会终止。
要在命令行指定启动入口点,请尝试:
docker create -it [image] /bin/bash
然后这样开始:
docker start -ia [Container ID]
容器将在 shell 退出后退出,因为这是将 shell 指定为入口点。
默认情况下可能未安装 cURL
。可以使用 apt-get
安装它。但是同样,一旦 shell 关闭,容器将停止并且任何更改都将丢失。首先,尝试在某处创建一个新目录,然后添加一个名为 Dockerfile
的文件,内容如下:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
ENTRYPOINT ["/bin/bash"]
这将创建一个安装了 curl 的新图像。然后,从创建 Docker 文件的新目录中,使用:
docker build .
docker images
这将构建一个新图像,使用 Docker 文件作为蓝图。
构建完成后,找到新容器的图像 ID,然后 运行 使用:
docker run -it [image id]
最终,要使 Docker 真正有用,典型的方法是将 Docker 文件 (ENTRYPOINT ["command"]
) 中的最后一行替换为将继续 运行ning 永远(像 ENTRYPOINT ["apache2"]
或 ENTRYPOINT ["redis"]
或类似的)。如果您有使用常规 desktop/server OS 安装和完整虚拟机(如 VMWare 或 VirtualBox)的经验,请记住 Docker 非常不同;它的工作方式和用于部署它的模式不一样。
如果您要使用 ubuntu:14.04
图像而不对其进行任何修改,则不需要单独的 Dockerfile
。并且不可能将普通 ubuntu:14.04
图像 运行 作为容器保留。
您可以使用 ubuntu:14.04
图像通过交互式 shell 直接启动容器。
docker run -it ubuntu:14.04 /bin/bash
但是普通的 ubuntu:14.04
图像没有预安装 curl
。
为此您需要自定义 Dockerfile
。
我正在尝试使用 ubuntu
图片开始 docker container
:
docker container run -d --name ubuntu_assignment_4 6e4f1fe62
然而,一旦我启动容器,它就会再次停止。
为什么会发生这种情况,如何确保容器保持 运行ning?
我在这里 运行 尝试的图片是:ubuntu:14.04
如果没有看到用于构建图像的完整 Docker 文件,我无法确切地说出发生了什么,但我很确定你遇到的麻烦只是因为无论任务是什么在容器内开始正在完成和退出。
Docker 容器通过分配一些命令来工作(使用 Docker 文件中的 ENTRYPOINT
或 CMD
指令,或作为 docker start
的参数或命令行上的 docker run
)这是容器加载时启动的程序。只要该任务继续 运行,容器就会一直存在,一旦该程序完成,容器就会终止。
要在命令行指定启动入口点,请尝试:
docker create -it [image] /bin/bash
然后这样开始:
docker start -ia [Container ID]
容器将在 shell 退出后退出,因为这是将 shell 指定为入口点。
默认情况下可能未安装cURL
。可以使用 apt-get
安装它。但是同样,一旦 shell 关闭,容器将停止并且任何更改都将丢失。首先,尝试在某处创建一个新目录,然后添加一个名为 Dockerfile
的文件,内容如下:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
ENTRYPOINT ["/bin/bash"]
这将创建一个安装了 curl 的新图像。然后,从创建 Docker 文件的新目录中,使用:
docker build .
docker images
这将构建一个新图像,使用 Docker 文件作为蓝图。 构建完成后,找到新容器的图像 ID,然后 运行 使用:
docker run -it [image id]
最终,要使 Docker 真正有用,典型的方法是将 Docker 文件 (ENTRYPOINT ["command"]
) 中的最后一行替换为将继续 运行ning 永远(像 ENTRYPOINT ["apache2"]
或 ENTRYPOINT ["redis"]
或类似的)。如果您有使用常规 desktop/server OS 安装和完整虚拟机(如 VMWare 或 VirtualBox)的经验,请记住 Docker 非常不同;它的工作方式和用于部署它的模式不一样。
如果您要使用 ubuntu:14.04
图像而不对其进行任何修改,则不需要单独的 Dockerfile
。并且不可能将普通 ubuntu:14.04
图像 运行 作为容器保留。
您可以使用 ubuntu:14.04
图像通过交互式 shell 直接启动容器。
docker run -it ubuntu:14.04 /bin/bash
但是普通的 ubuntu:14.04
图像没有预安装 curl
。
为此您需要自定义 Dockerfile
。