2016-07-19 17:30:32 -04:00
# Minio Docker Quickstart Guide [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/minio/minio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2015-11-06 19:46:04 -05:00
2016-07-19 17:30:32 -04:00
## 1. Test Minio Docker Container
2016-04-12 02:59:12 -04:00
Minio generates new access and secret keys each time you run this command. Container state is lost after you end this session. This mode is only intended for testing purpose.
2016-07-19 17:30:32 -04:00
2016-07-21 17:58:16 -04:00
```sh
2016-04-15 20:40:56 -04:00
docker run -p 9000:9000 minio/minio /export
2016-07-21 17:58:16 -04:00
2016-03-24 20:28:04 -04:00
```
2015-11-06 19:46:04 -05:00
2016-08-30 06:53:29 -04:00
## 2. Run One Minio Docker Container
2016-07-21 17:58:16 -04:00
2016-04-12 02:59:12 -04:00
Minio container requires a persistent volume to store configuration and application data. Following command maps local persistent directories from the host OS to virtual config `~/.minio` and export `/export` directories.
2016-02-18 05:13:52 -05:00
2016-07-21 17:58:16 -04:00
```sh
2016-04-11 15:33:34 -04:00
docker run -p 9000:9000 --name minio1 \
2016-04-12 02:59:12 -04:00
-v /mnt/export/minio1:/export \
-v /mnt/config/minio1:/root/.minio \
2016-04-15 20:40:56 -04:00
minio/minio /export
2016-07-21 17:58:16 -04:00
2016-04-11 15:33:34 -04:00
```
2016-07-19 17:30:32 -04:00
## 3. Custom Access and Secret Keys
2016-07-21 17:58:16 -04:00
2016-04-12 02:59:12 -04:00
To override Minio's auto-generated keys, you may pass secret and access keys explicitly as environment variables. Minio server also allows regular strings as access and secret keys.
2016-07-21 17:58:16 -04:00
```sh
2016-04-11 15:33:34 -04:00
docker run -p 9000:9000 --name minio1 \
2016-04-12 02:59:12 -04:00
-e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
2016-04-11 15:33:34 -04:00
-v /mnt/export/minio1:/export \
-v /mnt/config/minio1:/root/.minio \
2016-04-15 20:40:56 -04:00
minio/minio /export
2016-07-21 17:58:16 -04:00
2015-11-28 14:18:47 -05:00
```
2016-08-30 06:53:29 -04:00
## 4. Run Minio in clustered mode
Let's consider that we need to run 4 minio servers inside different docker instances.
### Prepare and start Minio docker instances
```sh
$ docker run -d --name=minio1 -e "MINIO_ACCESS_KEY=abcde" -e "MINIO_SECRET_KEY=secret00" -it -v/mnt/export/minio1:/export minio/minio
$ docker run -d --name=minio2 -e "MINIO_ACCESS_KEY=abcde" -e "MINIO_SECRET_KEY=secret00" -it -v/mnt/export/minio2:/export minio/minio
$ docker run -d --name=minio3 -e "MINIO_ACCESS_KEY=abcde" -e "MINIO_SECRET_KEY=secret00" -it -v/mnt/export/minio3:/export minio/minio
$ docker run -d --name=minio4 -e "MINIO_ACCESS_KEY=abcde" -e "MINIO_SECRET_KEY=secret00" -it -v/mnt/export/minio4:/export minio/minio
```
### Get docker instances IP addresses:
```sh
$ docker ps -q | xargs -n 1 docker inspect --format '{{ .NetworkSettings.IPAddress }}'
172.17.0.2
172.17.0.3
172.17.0.4
172.17.0.5
```
### Run all minio instances
```sh
$ docker exec -d minio1 minio server 172.17.0.2:/export 172.17.0.3:/export 172.17.0.4:/export 172.17.0.5:/export
$ docker exec -d minio2 minio server 172.17.0.2:/export 172.17.0.3:/export 172.17.0.4:/export 172.17.0.5:/export
$ docker exec -d minio3 minio server 172.17.0.2:/export 172.17.0.3:/export 172.17.0.4:/export 172.17.0.5:/export
$ docker exec -d minio4 minio server 172.17.0.2:/export 172.17.0.3:/export 172.17.0.4:/export 172.17.0.5:/export
```