> For the complete documentation index, see [llms.txt](https://avbravo-2.gitbook.io/jmoordb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://avbravo-2.gitbook.io/jmoordb/capitulo-1/introduccion/mongodb/instalar-mongodb.md).

# Instalar Mongodb con Docker

{% embed url="<https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb-community-edition-using-deb-packages>" %}

## **Docker**

{% embed url="<https://app.gitbook.com/@avbravo-2/s/docker/chapter1/instalar-docker-en-ubuntu-1804>" %}

**Instalar Docker**&#x20;

**Fuente:**

{% embed url="<https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04>" %}

**Pasos**

sudo apt update

sudo apt install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -

sudo add-apt-repository "deb \[arch=amd64] <https://download.docker.com/linux/ubuntu> bionic stable"

sudo apt update

apt-cache policy docker-ce

sudo apt install docker-ce

sudo systemctl status docker

sudo usermod -aG docker ${USER}

su - ${USER}

id -nG

**Ejecute docker**

docker

**Instalar una imagen de mongodb**

docker pull mongo

**o de una versión especifica**

docker pull mongo:3.6.4

**para la versión 4.0.4**

docker pull mongo:4.0.4

**Guardar data permanente en el disco fuera del contenedor**

docker volume create mongodbdata

**Abrimos el terminal y Creamos el directorio data en nuestro Ubuntu**

**sudo mkdir -p /data/db**<br>

**Darle permisos de escritura a la carpeta**

&#x20;  **sudo chmod 777 /data/db**

**Ejecutarlo**

docker run --name mongodb -p 27017:27017 -v mongodbdata:/data/db mongo

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnULCXj9zIq3T0bqvU%2F-LcnV6XU8liO6ml_3zWR%2Fmong.png?alt=media\&token=798eda4e-ccbe-4e3a-a493-9d6e0617fc03)

**Al ejecutarlo**

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnULCXj9zIq3T0bqvU%2F-LcnWWLOspxf93BElIXy%2Frmd1.png?alt=media\&token=981211db-3a66-41cd-af4e-1f438e5438a4)

**si se ha ejecutado varias veces puede que genere un conflicto hay que eliminarlo**

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnULCXj9zIq3T0bqvU%2F-LcnVHRaJYeGTWg-nmV1%2Ferrror.png?alt=media\&token=fca624cf-a09d-49c3-8fd1-a39021f26055)

**Eliminarlo**

docker rm mongodb

**Abrimos otra consola y nos conectamos al shell**

**Primero observamos las imágenes**

**docker ps**

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnULCXj9zIq3T0bqvU%2F-LcnXGqQFPPXIZVvRqis%2Fps.png?alt=media\&token=0673c4f5-8152-4164-8d41-d681a587aabc)

**Conectarse al shell**

docker exec -it mongodb bash

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnXhJVYGZzLWDSoRC8%2F-LcnXtG_pnltPMe_YvNL%2Fshell.png?alt=media\&token=a399ec6e-70b1-4738-ba29-9ddfc17f9e64)

**Ahora ejecutar mongo**

**mongo**

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnXhJVYGZzLWDSoRC8%2F-LcnYF0bjj8U5VSKyIXO%2Fmongo.png?alt=media\&token=92a58ee2-70a5-4f87-b8c9-a21736444ffa)

**Estaremos corriendo mongodb en docker pero guardando en /data/db**

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-LcnXhJVYGZzLWDSoRC8%2F-LcnYX9Tae5z2RoBKNJE%2Fdb.png?alt=media\&token=d740ef8c-d64e-4298-b6cd-3226a6d43328)

## RESTAURAR UNA BASE DE DATOS MONGODB

**Copiar el archivo al directorio tmp**

```
cp store2019_04_17_22_02.zip /tmp
```

**descomprimirlo**

```
cd /tmp
unzip store2019_04_17_22_02.zip 
```

**Ejecutar el mongorestore**

```
docker run -it --rm --link mongodb:mongo -v /tmp/store2019_04_17_22_02:/tmp mongo bash -c 'mongorestore -v --host $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT /tmp'

```

## CREAR BACKUP

Crearemos un backup de la base de datos store en el directorio /tmp

```
docker run -it --rm --link mongodb:mongo -v /tmp/store:/tmp mongo bash -c 'mongodump -d store -v --host $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT --out=/tmp'

```

Crea la carpeta llamada store con el backup de la base de datos

y dentro del el todas las bases de datos respaldadas.

```
cd /tmp
ls

```

![](https://1490144122-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lc1Wg6bBVlJX-GjApa1%2F-Lcnl5Diwo0yoWcplZqI%2F-LcnleBDbjA-kxPXlw9D%2Fstore.png?alt=media\&token=5e3751e3-39fd-4e3c-bc5f-4490b381850f)

Comprimimos el directorio

```
tar -cvzf store.tar.gz store
```

lo podemos mover a cualquier directorio

{% embed url="<https://www.thepolyglotdeveloper.com/2019/01/getting-started-mongodb-docker-container-deployment/>" %}

Referencias:

### Backup restore

<http://exabig.com/blog/2017/05/23/mongodb-backup-restore-docker-container/>

{% embed url="<https://blog.studiointeract.com/mongodump-and-mongorestore-for-mongodb-in-a-docker-container-8ad0eb747c62>" %}
