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

Docker在启动后退出

宰父霖
2023-03-14

所以在开始这个问题之前,这里是我对码头工人的理解。

  1. Docker有3个组件
  2. 图像
  3. 容器
  4. DockerFile

现在,我不想采用DockerFile方法,在这里指定创建容器时要执行的步骤。

我想在Linux上安装一些基本的实体,如MongoDb、Redis等,并在它们上运行我的服务器。

于是我就这样开始了:

Docker create-h abc.com--name abc.com 18261DF960118..7A16

它返回给我容器的id。

但每次它都在说:

请帮助我做错的地方,这可能是一个新手的问题,但我被困在这里,请不要反对相同的投票。

提前道谢。

共有1个答案

司马弘益
2023-03-14

编辑:在我最初的帖子中,我提到:“试着像VM那样思考”。我最近陷入了这样的困境,它说不要这样做:

不要把容器看作是一个迷你VM,而是把它看作一个进程。

还有一篇值得阅读的文章:容器不是虚拟机

docker container create -it --name test ubuntu
445cad0a3afea97494635361316e5869ad3b9ededdd6db46d2c86b4c1461fb75
$ docker container start test
test
$ docker container exec -it test bash
root@445cad0a3afe:/# your are inside, you can type your commands here!

您可以使用类似nginx的图像来测试这一点。如果您运行一个新的nginx容器并尝试附加到它,您将看到来自nginx的日志正在被打印出来,并且您无法在shell中键入任何命令。发生这种情况的原因是映像的CMD如下所示:

# Define default command.
CMD ["nginx"]

为了能够“附加”到这样的容器,同时也能够使用shell(其他一些人可能也会提到这一点,比如在容器上执行与ssh等价的操作),您必须运行:

docker container exec -it your_container_name bash

我建议你也读一读:

>

  • 是否可以在运行的容器中启动shell会话(不使用ssh)

    Docker-输入带有新TTY的运行容器

    如何连接和分离Docker的进程?

    ~jpetazzo:如果您在Docker容器中运行SSHD,您就做错了!

  •  类似资料:
    • 我有一个运行播放web应用程序的docker映像。在dockerfile中有一个CMD,它启动服务器,并等待您按下Ctrl+D退出。如果我这样做: 它工作正常-启动服务器并等待Ctrl+D。 然而,当我启动容器时,情况并非如此: 如何强制docker start不停止服务器?

    • 本文向大家介绍解决docker run 或者 docker restart 启动镜像就自动退出,包括了解决docker run 或者 docker restart 启动镜像就自动退出的使用技巧和注意事项,需要的朋友参考一下 执行命令:docker run --name centos8 -d centos /bin/bash,通过docker ps查看正在运行中容器,找不到centos8。 通过do

    • 问题内容: 我使用以下命令创建了容器: 以下是命令: 真的没有太多要说的,我希望容器能启动并保持正常运行。这是日志: 问题答案: 您正在尝试运行,它是需要tty 才能运行的交互式外壳。使用,在“分离”模式下运行此命令实际上没有任何意义,但是您可以通过添加到命令行来做到这一点,以确保容器具有与其关联的有效tty并保持连接状态: 在启动分离的容器时,您通常会运行某种长期存在的非交互式进程(例如,或We

    • 问题内容: 我是Docker的新手。安装Docker Toolbox(OS:Windows 10)之后,我运行Docker Quickstart Terminal,并在控制台中看到以下内容: 我做错什么了?系统和安装步骤的所有检查均从此处进行。 非常感谢您的帮助! 问题答案: 在Windows 10计算机上安装Docker Toolbox时遇到了相同的错误。 解: 安装Docker Communi

    • 问题内容: 我准备了一个docker-compose文件来部署带有数据库的容器: 没关系。但是现在我需要创建一个数据库并建立其结构。我需要执行一些sql命令。为了检查我是否能够做到这一点,我将其添加到服务中: 但是我遇到以下错误: 我感觉命令是在Sql Server实例启动之前执行的。我该如何解决?Sql Server启动后如何执行一些sql? 问题答案: 问题是在容器中仅执行一个命令。当您在其中

    • Dockerfile在Tomcat中正常工作。tomcat启动后,我必须触发ant脚本。catalina.sh是从一个单独的run.sh文件启动的。因此,Dockerfile具有CMD[“/tmp/run.sh”] run.sh文件有以下几行: catalina.sh运行 antscript Tomcat启动,但不调用ant脚本。我也尝试了其他的可能性,比如: catalina.sh运行&antS