Please ensure your host system meets the requirements listed below. Then continue to the Procedure for installing
OpenMetadata.
## OSX and Linux
### Python (version 3.7 or greater)
To check the version of Python you have, use the following command:
```bash
python3 --version
```
### Docker (version 20.10.0 or greater)
[Docker](https://docs.docker.com/get-started/overview/) is an open-source platform for developing, shipping, and running applications. It enables you to separate your
applications from your infrastructure, so you can deliver software quickly using OS-level virtualization. It helps
deliver software in packages called Containers.
To check the version of Docker you have, use the following command.
```commandline
docker --version
```
If you need to install Docker, please visit [Get Docker](https://docs.docker.com/get-docker/).
{% note %}
You must allocate at least 6GB of memory to Docker in order to run OpenMetadata. To change the memory allocation
for Docker, please visit `Preferences -> Resources -> Advanced` in your Docker Desktop.
{% /note %}
### Docker Compose (version v2.1.1 or greater)
The Docker `compose` package enables you to define and run multi-container Docker applications. The compose command
integrates compose functions into the Docker platform, making them available from the Docker command-line interface (
CLI). The Python packages you will install in the procedure below use compose to deploy OpenMetadata.
- **MacOS X**: Docker on MacOS X ships with compose already available in the Docker CLI.
- **Linux**: To install compose on Linux systems, please visit the Docker CLI command documentation and follow the
instructions.
To verify that the docker compose command is installed and accessible on your system, run the following command.
```commandline
docker compose version
```
Upon running this command you should see output similar to the following.
```commandline
Docker Compose version v2.1.1
```
### Install Docker Compose Version 2.0.0 on Linux
Follow the instructions [here](https://docs.docker.com/compose/cli-command/#install-on-linux) to install docker compose version 2.0.0
1. Run the following command to download the current stable release of Docker Compose
- Install [Docker for Windows](https://www.docker.com/products/docker-desktop)
- Once installed, please follow the steps [here](https://docs.docker.com/desktop/windows/wsl/) and complete all the pre-requisites for a seamless installation and deployment.
- After completion of the pre-requisites, please install `python3-pip` and `python3-venv` on your Ubuntu system.
- Command: `apt install python3-pip python3-venv` (Ensure that you have the priviledge to install packages, if not, please use Super User.)
## Procedure
### 1. Create a directory for OpenMetadata
Create a new directory for OpenMetadata and navigate into that directory.
```bash
mkdir openmetadata-docker && cd openmetadata-docker
```
### 2. Create a Python virtual environment
Create a virtual environment to avoid conflicts with other Python environments on your host system.
A virtual environment is a self-contained directory tree that contains a Python installation for a particular version
of Python, plus a number of additional packages.
In a later step you will install the `openmetadata-ingestion` Python module and its dependencies in this virtual environment.
```bash
python3 -m venv env
```
### 3. Activate the virtual environment
```bash
source env/bin/activate
```
### 4. Upgrade pip and setuptools
```bash
pip3 install --upgrade pip setuptools
```
### 5. Install the OpenMetadata Python module using pip
This snippet will create a directory named `openmetadata` and download the `docker-compose.yml` file automatically.
Afterwards, it will start the containers. If instead you want to download the file manually to another location,
you can do so from the Releases [page](https://github.com/open-metadata/OpenMetadata/releases).
This will start all the necessary components locally. You can validate that all containers are up
and running with `docker ps`.
```commandline
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
470cc8149826 openmetadata/server:0.11.0 "./openmetadata-star…" 45 seconds ago Up 43 seconds 3306/tcp, 9200/tcp, 9300/tcp, 0.0.0.0:8585-8586->8585-8586/tcp openmetadata_server
63578aacbff5 openmetadata/ingestion:0.11.0 "./ingestion_depende…" 45 seconds ago Up 43 seconds 0.0.0.0:8080->8080/tcp openmetadata_ingestion
9f5ee8334f4b docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 45 seconds ago Up 44 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp openmetadata_elasticsearch
08947ab3424b openmetadata/db:0.11.0 "/entrypoint.sh mysq…" 45 seconds ago Up 44 seconds (healthy) 3306/tcp, 33060-33061/tcp openmetadata_mysql
```
In a few seconds, you should be able to access the OpenMetadata UI at [http://localhost:8585](http://localhost:8585):
### Network openmetadata_app_net Error
You might see something like:
```
The docker command executed was `/usr/local/bin/docker compose --file /var/folders/bl/rm5dhdf127ngm4rr40hvhbq40000gn/T/docker-compose.yml --project-name openmetadata up --detach`.
It returned with code 1
The content of stdout can be found above the stacktrace (it wasn't captured).
The content of stderr is 'Network openmetadata_app_net Creating
Network openmetadata_app_net Error
failed to create network openmetadata_app_net: Error response from daemon: Pool overlaps with other one on this address space
```
A common solution is to run `docker network prune`:
```
WARNING! This will remove all custom networks not used by at least one container.
```
So be careful if you want to keep up some (unused) networks from your laptop.
### Connect to a Container from the Host
Do you want to connect to a container from the host [Refer](https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host)
### After upgrading OpenMetadata version
If you're running the `metadata docker --start` after updating the `openmetadata-ingestion` package to a newer
OpenMetadata release, you might encounter issues. For example,
`java.lang.ClassNotFoundException: org.openmetadata.service.security.NoopAuthorizer` when updating from 0.11.
Then, you'll need to first run `metadata docker --clean`. It will clean/prune the containers, volumes, and networks,
and download the newest docker compose file from the release. **Note that this will get rid of the data**. If you want to keep it,
you will need to [Backup your data](/deployment/backup-restore-metadata). This command is required after each time you
want to update your quickstart deployment of OpenMetadata with a new release to pick up the new compose file.