【问题标题】:How to open a shell while/after running a Docker container without overriding existing CMD?如何在运行 Docker 容器时/之后打开外壳而不覆盖现有 CMD?
【发布时间】:2016-11-07 06:36:51
【问题描述】:

所以我的 Dockerfile 中的最后一行是:

CMD Django-admin startproject testproject

我是 Docker 新手,我刚刚了解到我只能在 Dockerfile 中使用一次 CMD 行,并且在以下示例中运行 /bin/shell 会覆盖 CMD:

docker run -it <containerid> /bin/bash

我的问题是如何在不覆盖 Django-admin startproject CMD 的情况下打开 shell?我已经查看了 docker attach 但这似乎并没有打开外壳。我觉得我在这里遗漏了一些明显的东西。我只想运行我的容器并进入 shell 并四处寻找并确保我的 Django 项目正在实际创建中。

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    您可以简单地运行容器而无需在后台覆盖命令:

    docker run -d --name container_name <image_name>
    

    接下来您可以使用新会话附加到正在运行的容器:

    docker exec -it container_name bash
    

    【讨论】:

    • 我在这里遇到了问题,如果我运行您发布的“docker run”命令,docker ps 显示没有容器正在运行。但是,如果我使用 /bin/bash 执行 docker run,那么 docker ps 会显示容器正在运行。所以问题是我无法附加到容器,因为它没有运行(使用您的解决方案)
    • @david,你需要检查CMD和docker logs然后,它也没有运行,因为CMD已经完成(程序退出,或者有错误无法启动,等等)
    • 我已经从 Dockerfile 中删除了 CMD,因此问题不再与 CMD 相关。如果我运行 Slawomir 发布的 docker run 命令,则没有容器在运行。如果我使用 -it 执行 docker run,则容器正在运行并且没有错误。
    • 我会为这个问题写一个新的帖子。
    猜你喜欢
    • 1970-01-01
    • 2022-08-09
    • 2019-10-28
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2015-07-22
    • 2021-11-29
    相关资源
    最近更新 更多