Search code examples
dockerdocker-compose

docker-compose for Detached mode


I have following docker command to run container

docker run -d --name test -v /etc/hadoop/conf:/etc/hadoop/conf -v /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common -v /etc/hive/conf/:/etc/hive/conf/ -v /etc/tez/conf/:/etc/tez/conf/ -v /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/ -i -t hdinsight /bin/bash

This was to complicated so I was trying to create docker-compose file like this

version: '2'
services:
  hdinsight:
    image: hdinsight
    container_name: ABC
    volumes:
     - /etc/hadoop/conf:/etc/hadoop/conf
     - /usr/lib/python2.7/dist-packages/hdinsight_common:/usr/lib/python2.7/dist-packages/hdinsight_common
     - /etc/hive/conf/:/etc/hive/conf/
     - /etc/tez/conf/:/etc/tez/conf/
     - /usr/hdp/2.4.2.0-258/sqoop/lib/:/usr/hdp/2.4.2.0-258/sqoop/lib/
    entrypoint:
     - bash
    labels:
     - "HDInsight client VM"

But I am not sure where to pass -d, -i & -t flages from my original docker run command

I was running docker-compose like this

docker-compose -f docker-compose.yml run hdinsight

can anyone point me to right direction here ?

UPDATE after first answer

I tried to run docker-compose up -d

root@abc-docker:~/ubuntu# docker-compose up -d
Creating ABC
root@sbd-docker:~/ubuntu# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
ffa4c359abf7        hdinsight           "/bin/bash"         5 seconds ago       Exited (0) 5 seconds ago                       ABC
root@sbd-docker:~/ubuntu#

Dont know why its in Exited status

Any idea ?

Thanks


Solution

  • You should scour the Compose file docs.

    Most docker run commands have a compose equivalent and should all be listed there.

    The background flag -d goes after run or up.

    The tty flag -t and interactive flag -i are not required as docker-compose run does this by default. You can add tty to individual containers in the compose file with -t, but you cannot use interactive mode since you may start multiple containers simultaneously and can't interact with them all.

    Regarding your situation, the command you're using should be working. If you add -d after the run command it will run in the background. But I recommend using up instead of run, as it will simply start all containers in the file rather than you have to specify hindsight.