【问题标题】:How to run -it with docker compose?如何使用 docker compose 运行 -it?
【发布时间】:2018-12-16 03:43:38
【问题描述】:

docker run -idt ubuntu:16.04,之后我们可以使用docker ps查看容器启动情况。

但是如果使用 docker compose as next 和 docker-compose up,我们可以看到 docker ps 找不到容器,从 docker ps -a 我们可以看到它退出了。

version: '2'
services:
  me:
    image: 'ubuntu:16.04'

问题:我们如何使用 docker compose 实现-idt

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    默认的CMD of an ubuntu image 是一个bash:

    # overwrite this with 'CMD []' in a dependent Dockerfile
    CMD ["/bin/bash"]
    

    来自“Interactive shell using Docker Compose”,看看添加这些行是否有帮助:

    stdin_open: true
    tty: true
    

    在 docker-compose 文件中我们可以添加 command 标签为

    command: /bin/bash
    

    【讨论】:

    • 这个帖子很有用,谢谢。但它与docker exec -ti <container name> /bin/bash 相关,docker compose 中-d 的任何其他参数?你知道,docker compose up 现在不会退出。
    • @docke 只要容器不退出,就可以认为它在后台运行。无论如何,您都需要 docker exec 才能实际使用默认的 bash CMD。
    【解决方案2】:

    docker-compose run {image} /bin/bash 已经可以交互了

    对于 docker-compose up,您不应该以交互方式运行它,而是将其作为服务运行。

    您也可以使用 docker-compose 组合它们,使用 docker ps 找到它们的图像,然后执行到它们中。如果您的图像正在加载守护程序(服务器),这将起作用,如果您的图像执行脚本然后退出,它也会退出图像,使其无法进入。请参阅此 question 解释如何做到这一点。

    【讨论】:

    • 当使用 idt 时,命令会立即结束,不会让我进入任何交互式 bash,但容器仍然存在。我不想执行任何容器,只想让这个容器在没有退出的情况下存活。
    • Docker 没有进程就无法存活,你需要有一个进程在后台运行,否则 docker 会杀死操作系统。
    • docker run -idt ubuntu:16.04之后容器还会活着吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多