docker-compose-itd和d

docker run -itd和-d的区别

前言:

​ 今天在通过docker-compose启动一基于ubuntu的镜像容器时,发现启动后,容器会一直停止。但是通过docker run -itd是可以正常运行的。基于这个区别,找了一位大神(师傅)问了下,他让我执行一下docker run -d ,执行后发现也是立马停止。所以立马查了下docker run -ird和docke run -d的区别。

  1. -itd

    • -i:表示以交互模式运行容器,通常与 -t 一起使用,分配一个伪终端 (pseudo-TTY)。
    • -t:分配一个伪终端 (pseudo-TTY)。
    • -d:表示以后台方式 (detached mode) 运行容器,即容器在后台运行并且不会占用当前终端。

    使用 -itd 参数启动容器时,容器会在后台运行,并且你可以通过 docker attach 命令重新连接到容器的标准输入、输出和错误流,以进行交互操作。

    2.-d

    • -d:表示以后台方式 (detached mode) 运行容器,即容器在后台运行并且不会占用当前终端。
    • 运行后,会导致 bash 找不到要分配的伪终端。后台运行,其实是有前提的,如果没有前台进程,那么实际运行完docker run命令后,会处于退出状态,即exited
docker run -d --name my-redis redis bash
# 指定命令是bash,但显然bash在容器起来后,很快就会结束,导致没有前台进程,故容器处于退出状态

解决docker-compose不能启动容器

要使 Docker Compose 中的容器保持挂起状态,即在容器启动后保持运行而不自动退出,可以通过 docker-compose.yml 文件中的 command 字段来指定容器启动后要执行的命令

version: '3'
services:
  web:
    image: nginx:latest
    container_name: web
    restart: always
    privileged: true
    ports:
      - "26090:26090"
    command: tail -f /dev/null
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值