The problem is here: CMD service apache2 start When this command is executed, the apache2 process will be disconnected from the shell. But Docker only works when the main process is alive.
The solution is to run Apache in the foreground . Dockerfile should look like this: (only the last line has changed).
FROM ubuntu # File Author / Maintainer MAINTAINER rmuktader # Update the repository sources list RUN apt-get update # Install and run apache RUN apt-get install -y apache2 && apt-get clean #ENTRYPOINT ["/usr/sbin/apache2", "-k", "start"] #ENV APACHE_RUN_USER www-data #ENV APACHE_RUN_GROUP www-data #ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 CMD apachectl -D FOREGROUND
source share