# Docker

Mycroft is available for `Docker`. You have two options for a `Docker` installation:

* Build Image from source
* Pull Image from Docker Hub

## Prerequisites

This documentation assumes the following:

* You have already installed `Docker` on your machine based on the operating system you are running.

## Getting Started

### Installing from Docker Hub

The Mycroft for Docker image is updated on [dockerhub](https://hub.docker.com/r/mycroftai/docker-mycroft/) and you can install it by running the command below:

```bash
docker pull mycroftai/docker-mycroft
```

Then follow the instructions below for running Mycroft for Docker.

### Installing via building the Docker image

it pull this repository.

```bash
git clone https://github.com/MycroftAI/docker-mycroft.git
```

Build the `Docker` image in the directory that you have checked out.

```bash
docker build -t mycroft .
```

Follow the instructions for running Mycroft for Docker below to continue.

## Running Mycroft for Docker

To prevent having to register your instance with home.mycroft.ai every time the container is started, and to have persistent data, you can map a local directory into the container. Just replace the `directory_on_local_machine` with the path you want the container mapped to on your local machine (eg. `/home/user/mycroft`).

Sounds can be played in the `Docker` container using `pulseaudio`, without modifying any config files

* Set [PULSE\_SERVER](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/#directconnection) `env` variable
* Share pulseaudio's [cookie](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/#authorization)

Run the following to start up Mycroft for Docker:

\_NOTE: You don't need the -e PULSE\_SERVER or any of the other pulse related variables if you only want to use text via a websocket to mycroft for example using this container.

```bash
docker run -d \  
-v directory_on_local_machine:/root/.mycroft \
--device /dev/snd \
-e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \
-v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native \
-v ~/.config/pulse/cookie:/root/.config/pulse/cookie \
-p 8181:8181 \
--name mycroft mycroftai/docker-mycroft
```

Confirm via `docker ps` that your container is up and serving port 8181:

```bash
docker ps  
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES  
692219e23bf2 mycroft "/mycroft/ai/mycro..." 3 seconds ago Up 1 second 0.0.0.0:8181->8181/tcp mycroft
```

You should now have a running instance of Mycroft for Docker that you can interact with via the command line.

### Pairing Mycroft for Docker

After the container has been started you can watch the logs and look for the line that says "Pairing Code" and use this to pair at <https://home.mycroft.ai>.

You can view the logs with:

```bash
docker logs -f mycroft
```

## Interacting With Mycroft on Docker

### Accessing Mycroft Logs

At any time you can watch the logs simply by running the bellow command:

```bash
docker logs -f mycroft
```

You can exit out of this `docker log` command by hitting Ctrl + C. The `--follow` turns it into a real `tail` instead of a `cat` of the log.

## CLI Access

### Accessing Mycroft CLI

You can interact with the CLI of the container by running the following command. This will connect you to the running container via `bash`:

```bash
docker exec -it mycroft /bin/bash
```

Once in the container you can do `./start-mycroft.sh cli` to get a interactive CLI to interact with Mycroft for Docker if needed.

You can type Ctrl + C to exit the cli.

### Installing Skills on Docker Mycroft

You can install **Skills** into the container by running the following:

```bash
docker exec -it mycroft /opt/mycroft/msm/msm install github_url
```

So to install the Hello World Skill:

```bash
docker exec -it mycroft /opt/mycroft/msm/msm install https://github.com/MycroftAI/skill-hello-world
```

### Removing Skills on Docker Mycroft

You can also uninstall a **Skill** using MSM with:

```bash
docker exec -it mycroft /opt/mycroft/msm/msm remove skill-hello-world
```

## Troubleshooting

### Text-to-speech not working

There have been reports that `mimic` may not be properly added to the PATH. Restarting Mycroft within the Docker container can resolve this.

### Getting help

Mycroft for Docker is community-supported. You are welcome to join the [Mycroft Chat Docker channel](https://chat.mycroft.ai/community/channels/docker).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mycroft-ai.gitbook.io/docs/using-mycroft-ai/get-mycroft/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
