A key part of the CircleCI 2.0 config is selecting the executor type. This is the environment which your job will run inside of. There are currently three executor types: docker, machine, and macos.
Each executor has its own advantages and disadvantages. For most projects, you'll want to choose between the docker or machine executor. You can see an overview of differences between these executor types here on our docs page.
Using docker will run your jobs inside a Docker container. Read more here on the docker executor docs page. The docker executor lets you utilize multiple Docker images per job for added awesomeness, which you can read about here.
Using machine will run your jobs inside a dedicated, ephemeral Virtual Machine (VM). Read more here on the machine executor docs page.
Using macos will run your jobs inside macOS VM with a configurable version of Xcode. Read more here on the macos executor docs page.