Docker – container with multiple images

I wanted to make a Dockerfile with multiple images to run in one container.

What is the best method to go about this? Below is a list of what I wanted to run in a single container. I have not have any luck with making a Dockerfile with all of these included.

  • Http On Google Container Engine
  • Unable to access gitlab repository in docker
  • Docker tag flag not working when building from Dockerfile
  • Why am I getting a permission denied error on docker/aws eb?
  • Cucumber on Travis CI container
  • Haproxy reload with different backend server ip
    • MySQL Server
    • RabbitMQ
    • Java8
    • Node.js
    • Xvfb
    • Firefox
    • Chrome

    This is what I have so far, can I get a few tips

    FROM stackbrew/ubuntu:12.04
    MAINTAINER 
    # Update the repository sources list #RUN apt-get update  
    # My SQL Server ############### 
    RUN apt-get 
    update -qq && apt-get 
    install -y mysql-server-5.5 
    ADD my.cnf /etc/mysql/conf.d/my.cnf 
    RUN chmod 664 /etc/mysql/conf.d/my.cnf
    ADD run /usr/local/bin/run 
    RUN chmod +x /usr/local/bin/run  V
    OLUME ["/var/lib/mysql"] 
    EXPOSE 3306
    CMD ["/usr/local/bin/run"] 
    

  • change bluemix docker default subnet to a different value?
  • Understanding docker - how do containers contain all required dependencies?
  • Inter docker communication (mqtt and python)
  • Dockerrun.aws.json structure for ECR Repo
  • Understanding a docker entrypoint script
  • Proper way to automatically start and expose ssh when running my app container
  • 2 Solutions collect form web for “Docker – container with multiple images”

    You cannot have “multiple images to run in one container”, that wouldn’t make sense.

    But you can write a Dockerfile to create an image that will install all the services you mentionned. Example (Ubuntu/Debian distribution) :

    [...header...]
    FROM stackbrew/ubuntu:12.04 #or use ubuntu-upstart:12.04
    MAINTAINER BPetkov  
    
    # Update the repository sources list
    RUN apt-get update -qq 
    
    # Mysql
    RUN apt-get install -y mysql-server-5.5  
    ADD my.cnf /etc/mysql/conf.d/my.cnf 
    RUN chmod 664 /etc/mysql/conf.d/my.cnf 
    ADD run /usr/local/bin/run 
    RUN chmod +x /usr/local/bin/run  
    
    # Other stuff
    RUN apt-get -y install rabbitmq
    RUN apt-get -y install nodejs
    [...]
    VOLUME ["/var/lib/mysql"] 
    EXPOSE 3306 
    EXPOSE .......
    CMD ["/sbin/init"]
    

    Then you would have to get all of them started automatically when the container starts.

    You can use a process manager such as supervisord (Docker documentation here).

    Alternatively, you could use a regular init system, check this base image : ubuntu-upstart. This one would allow you to only have to install the packages in your Dockerfile and get them started automatically without any effort, by specifying /sbin/init as EntryPoint or CMD in your Dockerfile.

    The feature you’re looking for is Docker Compose.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.