当前位置: 首页 > 知识库问答 >
问题:

已退出使用docker compose创建的容器

池照
2023-03-14

每当我尝试docker compose up-d,我的容器都会以code0退出。

我有以下docker编写。yml

    version: "3"
    services:
      ansible:
        container_name: controller
        image: centos_ansible
        build:
          context: centos_ansible
        networks:
          - net
    
    networks:
      net:

centos ansible中的Dockerfile:

    FROM centos
    RUN yum install python3 -y && \
    yum install epel-release -y && \
    yum install ansible -y

共有3个答案

符棋
2023-03-14

只有在容器内有要运行的内容时,Docker容器才会继续运行。尝试添加一个ENTRYPOINT到你的Dockerfile!(https://docs.docker.com/engine/reference/builder/#entrypoint)

公西嘉玉
2023-03-14

为了保持容器运行,您需要告诉它做些什么。

正如另一个答案所提到的,您可以通过在Dockerfile中添加一个入口点来实现这一点。或者,根据此答案,您可以添加如下命令,或执行更有用的操作:

version: "3"
services:
  ansible:
    container_name: controller
    image: centos_ansible
    build:
      context: centos_ansible
    networks:
      - net
    command: tail -f /dev/null

networks:
  net:

或者,如果您需要将shell放入容器中,您可以将tty:true选项添加到您的服务中。

盖和泰
2023-03-14

问题是您没有指定对容器的任何操作,因此,它会立即退出。

有几种方法可以告诉容器做什么。请参阅此伟大的SO问题以了解更多信息。

在使用docker compose时,可以指示容器必须执行的命令

services:
  ansible:
    container_name: controller
    image: centos_ansible
    command: ansible-playbook playground.yml
    build:
      context: centos_ansible
    networks:
      - net

networks:
  net:

似乎您正试图从docker运行ansible。请看这篇文章,也许它会为你的问题提供一些额外的想法。

 类似资料:
  • 考虑: 我按下Ctrl键退出它。 我想继续运行这个容器,但我发现我不能。 唯一的方法就是 我说得对吗?有更好的方法吗?(我使用的是docker 0.8.0。)

  • 问题内容: 我正在尝试使用nginzx,flask和react创建一个docker-compose设置。我使用react-create- app(https://github.com/facebook/create-react- app )启动了我的react应用程序,但尚未对其进行任何更改。 我的react应用程序的Dockerfile是: 撰写脚本为: flask和nginx容器启动正常,re

  • 从这篇文章中,我发现我可以使用序列Ctrl+P+Ctrl+Q从docker容器中分离。 我想知道,是否可以创建一个bash(或python或其他)脚本,它进入docker容器,运行几个命令,然后使用转义序列退出容器?我认为可能不可能,但请确认/否认这一点!

  • 我需要编码方面的帮助。我再次练习我的java编程,今天我创建了一个计算器,它具有与真正的计算器相同的功能,但我再次遇到错误,无法再次计算。 好的,我希望我的计算器工作的方式是,而不是像这样从用户那里获取逐行输入:- 代码内输出 我想让它在用户按下enter键时进行计算,如下所示:- 我想要的输出 因此,他们可以在按下enter calculate键之前添加任意长的数字。用户应该能够在计算循环中使用

  • 问题内容: 例如,如果我使用命令, 它将启动一个终端,之后我可以安装软件包和所有软件包。现在,当我使用命令时,它会返回到终端。(主要一) 那么如何再次访问同一容器?当我再次运行该命令时,我得到了一个新的高山。 请帮忙 问题答案: 拉图像 看到那里的图像 看看高山里面有什么 现在您的问题是如何留在外壳上 您在Shell脚本命令行中。一些发行版可能有bash shell。 此时,您可以使用alpine

  • 在非gui模式下使用JMeter执行脚本和远程测试时,我会收到错误消息,如何解决该问题