Added Docker instructions authored by Farzad Fatollahi-Fard's avatar Farzad Fatollahi-Fard
......@@ -5,6 +5,12 @@ firesim:
version: v1.16.0
url: https://github.com/firesim/firesim/tree/1.16.0
docs-url: https://docs.fires.im/en/stable/Building-a-FireSim-Xclbin.html
chipyard:
version: v1.19.0
url: https://github.com/ucb-bar/chipyard/tree/1.9.0
firemarshal:
version: 12784a4
url: https://github.com/firesim/FireMarshal/tree/12784a42cb1b2188536ef5bfc123f800374d3177
aro-cn: D2021-2106030006
---
......@@ -16,6 +22,62 @@ This work was funded by the iARPA AGILE Program. [^1]
[[_TOC_]]
# Prerequisites
## Installing Docker
<img src="https://www.docker.com/wp-content/uploads/2022/03/vertical-logo-monochromatic.png" align="right" width="250px" alt="Alveo U250">
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
docker attach [HASHID/STRINGID/CUSTOM_CONTAINER_NAME]
```
### 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.
```bash
docker run \
[--privileged] [--name CUSTOM_CONTAINER_NAME] \
-it \
-v /tmp/mpoint:/app \
socks.lbl.gov:4567/cag/bxe
```
---
......
......