| # Docker Container | 
 |  | 
 | Docker container based on Ubuntu 18.04 LTS containing various hardware and | 
 | software development tools for OpenTitan, as listed in the | 
 | [OpenTitan documentation](../../doc/guides/getting_started/src/README.md). | 
 |  | 
 | ## Local Build Instructions | 
 |  | 
 | For now, no pre-built containers are available; you'll need to build the Docker container locally. | 
 | First, you'll need to install Docker either through your package manager or their [download page](https://www.docker.com/get-started/). | 
 | You'll also need to clone the [OpenTitan repository](https://github.com/lowRISC/opentitan) if you haven't done that yet. | 
 | Then, from `$REPO_TOP` (the top-level directory in the repository, called `opentitan` by default), you can build the container with: | 
 |  | 
 | ```shell | 
 | $ sudo docker build -t opentitan -f util/container/Dockerfile . | 
 | ``` | 
 |  | 
 | ## Using the Container | 
 |  | 
 | Run the container with `docker run`, mapping the current working directory to | 
 | `/home/dev/src`. The user `dev` will have the same user ID as the current user | 
 | on the host (you!), causing all files created by the `dev` user in the container | 
 | to be owned by the current user on the host. | 
 |  | 
 | If you'd like to initialize your shell environment in a specific way, you can | 
 | pass an environment variable `USER_CONFIG=/path/to/a/script.sh`. Otherwise, | 
 | remove the `--env USER_CONFIG` argument from the invocation shown below. | 
 |  | 
 | The script passed through this mechanism will be sourced. The path of the script | 
 | must be within the container, e.g. in the OpenTitan repository directory. | 
 |  | 
 | ``` | 
 | docker run -t -i \ | 
 |   -v $(pwd):/home/dev/src \ | 
 |   --env DEV_UID=$(id -u) --env DEV_GID=$(id -g) \ | 
 |   --env USER_CONFIG=/home/dev/src/docker-user-config.sh \ | 
 |   opentitan:latest \ | 
 |   bash | 
 | ``` | 
 |  | 
 | You can use `sudo` within the container to gain root permissions. |