The material in this document requires the use of [Docker](https://www.docker.com/). Either one of the following options will work:
- Access to a server with Docker installed
- Make sure your user account has been added to the `docker` group
Use [Docker Desktop](https://docs.docker.com/get-docker/) on your local machine
> **NOTE:** If you have an Apple M1/M2 (`arm`-based CPU), builds and simulations are prohibitively slow.
>
> `x86-64` processors are HIGHLY recommended.
## Pulling the Docker image
Docker images contain all of the files and binaries needed to run a particular task. You can think of Docker images as virtual machine snapshots. Our container registry has a collection of these images. Much like Git, these _tags_ are images that contain different files for different projects. We'll pull the `latest` tag, as shown below:
```bash
docker pull socks.lbl.gov:4567/cag/bxe
```
## Running a Docker container
Once you've pulled a Docker image, you can run within a container. You can think of containers as the virtual machine that's running the image you pulled. When a container is initialized and run, it's given a unique hash and a unique string name. When you want to access the container, you refer to its unique hash/string. You can also give your container a unique name, as domonstraited below:
> **NOTE:** `--privileged` is only required when using FireMarshal.
- Running a Docker container interactively
- This runs the Docker container and attaches the console of your container
```bash
docker run [--privileged][--name CUSTOM_CONTAINER_NAME] -it socks.lbl.gov:4567/cag/bxe
```
- Running a Docker container and attaching later
- You can run a Docker container in the background and attach to it
```bash
docker run [--privileged][--name CUSTOM_CONTAINER_NAME] socks.lbl.gov:4567/cag/bxe
### Mounting Host Directories in Docker containers
You can mount directories from your host machine within your container with the following command. In this example, we want to mount `/tmp/mpoint` from our host machine to `/app` in the container.