0

I am trying to create a docker container from docker image but it is not starting and I don't see error. First I tried this Docker file:

FROM php:7.0-apache
MAINTAINER Tony Lea <tony.lea@thecontrolgroup.com>

EXPOSE 80

RUN docker-php-ext-install pdo pdo_mysql mysqli

RUN apt-get update && \
    apt-get install -qqy \
      libmcrypt-dev \
      git-core \
      zlib1g-dev && \
    docker-php-ext-install \
      bcmath \
      mbstring \
      mcrypt \
      zip

WORKDIR /var/www/html

ENV COMPOSER_HOME=/var/www/html

RUN curl -sS https://getcomposer.org/installer | php && \
    mv composer.phar /usr/local/bin/composer

And inside docker compose I used this code:

version: '3'
services:
db:
  image: mysql
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: password

  volumes:
    - ./mydata:/var/lib/postgresql/data
  ports:
    - "52000:3306"
web:
  build: .
  volumes:
    - .:/var/www/html
  ports:
    - "3000:80"

First time I run this it worked and I stopped container and removed them and when I am trying docker-compose up I don't see any error and mysql container is running but ubuntu container is created but it is not running when I try to start I don't see error.

I tried to create one container using docker run ubuntu:18.04 it is creating a container but it is not starting I don't know what just happened. When I run docker ps -a I see this:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                     NAMES
eae0840f282a        ubuntu:18.04        "/bin/bash"              16 seconds ago      Exited (0) 14 seconds ago                             priceless_haibt
4689e8787905        ubuntu:18.04        "/bin/bash"              25 seconds ago      Exited (0) 23 seconds ago                             sad_williams
1284e06b22a8        mysql               "docker-entrypoint.s…"   12 minutes ago      Up 3 minutes                0.0.0.0:52000->3306/tcp   kyolab_db_1
7db2c0c987cd        kyolab_web          "/bin/bash"              12 minutes ago      Exited (0) 2 minutes ago                              kyolab_web_1

I tried this docker run -d -p 3000:80 --name=nilay ubuntu but no luck

What should I do ??

1 Answers1

5

Your image runs /bin/bash, then exits. You need to specify in the docker run a command to run, or add a CMD default command to your Dockerfile.

If you want to run an interactive shell, you can't use -d, and need -it instead.

tripleee
  • 175,061
  • 34
  • 275
  • 318
  • I am doing this docker run -d -p 3000:80 --name=nilay ubuntu a fresh ubuntu image. I tried fresh ubuntu –  Jun 01 '18 at 18:53
  • Yes. It tries to run aneinteractive shell, but because it's not run interactively, it exits. I'll update the answer with how to do that, too. – tripleee Jun 01 '18 at 18:55
  • I want to run container in background –  Jun 01 '18 at 18:58
  • Seems exactly as this: https://stackoverflow.com/questions/30209776/docker-container-will-automatically-stop-after-docker-run-d – Jorge Chavez Jun 01 '18 at 19:04
  • docker run -t -d ubuntu this worked official ubuntu https://hub.docker.com/_/ubuntu/ have no documentation –  Jun 01 '18 at 19:07