gpt4 book ai didi

Docker 启动后立即退出

转载 作者:行者123 更新时间:2023-12-02 07:02:48 29 4
gpt4 key购买 nike

因此,在开始问题之前,先介绍一下我对 docker 的理解。

  1. Docker 有 3 个组件
  2. 图片
  3. 容器
  4. Dockerfile

现在,镜像是在其上创建容器的镜像,而 Dockerfile 就像一个要执行的操作的流程。简而言之,图像是类容器是图像的对象。

现在我不想采取 Dockerfile 的方法您可以在其中指定创建容器时要执行的步骤。

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

所以我开始是这样的:

  1. 我通过 docker pull ubuntu 从 Docker Hub 下载了 Ubuntu 镜像。这返回了我 18261df960118..7a16(big hex key)

  2. 现在我必须为此图像创建一个容器,以实现我所做的:

    docker create -h abc.com --name abc.com 18261df960118..7a16

它返回了容器的 ID。

  • 为了进入容器,我必须首先启动它,然后附加到它,因此这里是命令 docker start containerId接下来是 docker attach containerId .
  • 但每次它都会说:

    You cannot attach to a stopped container, start it first.

    最佳答案

    编辑:在我原来的帖子中,我提到:“尝试像虚拟机一样思考”。我最近陷入this ,它表示不要这样做:

    Stop thinking about a container as a mini-VM and instead start thinking about it as just a process.

    还有,值得一读的文章:Containers are not VMs

    <小时/>

    原始帖子:

    Docker 容器的逻辑是它们应该启动并运行服务。如果此服务停止,它们将退出并进入“已停止”状态。 (当您了解有关 Docker 的更多信息时,您将了解其工作原理,并且能够使用 ENTRYPOINTCMD)。但让我们暂时跳过这个,尝试像虚拟机一样思考,运行一个新容器并在里面输入一些命令......

    成功:

    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!

    为什么你的失败...

    当您创建容器时,您没有使用-i标志,该标志有助于即使未连接也保持STDIN打开。这实际上意味着当容器启动时,它使用官方 ubuntu Dockerfile 中设置的 CMD ,即 bash,然后立即退出。

    docker Attach VS docker exec --it bash

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

    # Define default command.
    CMD ["nginx"]

    为了能够“附加”到这样的容器,同时也能够使用 shell(其他一些人也可能提到这一点,比如对容器执行相当于 ssh 的操作),您将必须运行:

    docker container exec -it your_container_name bash

    我建议您还阅读:

    关于Docker 启动后立即退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45216612/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com