CircleCI for Linux: Run any job in a fresh Ubuntu virtual machine

CircleCI provides a set of pre-configured VMs with all the possibilities and variations of Docker and a host of common tooling pre-installed. CircleCI supports any language that builds on Linux, including C++, Javascript, .NET, PHP, Python, Android, and Ruby.

Pre-provisioned, fresh every time

Save on VM spin-up time and get a clean environment for every job. Optional ability to cache and reuse the contents of your VM across jobs.

Full Docker CLI support

Conveniently run your `Docker` commands in a VM to build and push your images as part of a job.

CI for Android app development

Building an Android app? We’ve got you covered. Avoid 1-star reviews by ensuring that your apps are bug-free the first time. Learn more.


Customize your environment with auto-provisioned Linux VMs

Never run into the limitations of Docker-in-Docker because you can always run your jobs in a full Linux VM. Our Linux VMs are provisioned automatically just for your job and can be easily integrated into your other Docker-based jobs using a single line of configuration. See the following sample configurations below.

CircleCI lets you run your jobs in a full VM when you need access to system resources not available inside Docker. If you run into limitations with Docker, you have the option of running a full VM within Docker.

    
      
        version: 2
        jobs:
          build:
            machine: true
            steps:
              - checkout
              - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
              - run: docker build -t orgname/image:tag .
              - run: docker push orgname/image:tag
      
    
  

Run your jobs in the Docker image of your choice, or use a full Linux VM instead. You can also combine both by connecting to a clean Linux VM from within your Docker jobs.

    
      
        version: 2
        jobs:
          build:
            machine: true
            steps:
              - checkout
              - run: docker-compose build
              - run: docker-compose up -d