> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/docker/contenedores.md).

# Contenedores

## Crear contenedor.

```bash
docker create --name [container-name] [image-name]
```

***

## Ver contenedores.

### En ejecución.

```bash
docker ps
```

### Todos los contenedores, estén o no en ejecución.

```bash
docker ps -a
```

***

## Iniciar contenedor.

```bash
docker start [container]
```

## Parar contenedor.

```bash
docker stop [container]
```

## Reiniciar contenedor.

```bash
docker restart [container]
```

***

## DOCKER RUN (PULL + CREATE + START).

Descarga la imagen docker, crea el contenedor e inicia el mismo.

```bash
docker run --name [container-name] [image-name]
```

### Contenedor con pseudo tty (-it).

Si estamos trabajando con contenedores con sistemas operativos, es importante crear e iniciar el contenedor con una pseudo tty para que el mismo pueda mantenerse corriendo.

```bash
docker run --name [container-name] -it [image-name]
```

```
-i : Mantiene el STDIN abierto aunque no esté conectado.
-t : Asigna una pseudo-tty
```

Como resultado obtendremos una shell dentro del contenedor con el sistema operativo.

### Contenedor en segundo plano (-d).

En cambio si queremos que el contenedor se ejecute en segundo plano después de haberlo creado usamos el parámetro -d.

```bash
docker run --name [container-name] -d [image-name] sleep infinity
```

```
-d : Corre el contenedor en segundo plano e imprime el ID del contenedor.

sleep infinity : tiempo en que se ejecutara el contenedor, en esta caso infinito
                 hasta que paremos el contenedor.
```

***

## Ejecutar comandos en un contenedor en ejecución.

```bash
docker exec [container] [comando]
```

Con este subcomando también podemos obtener una pseudo-tty para interactuar con el sistema operativo que tengamos en un contenedor.

```bash
docker exec -it [container] bash
```

***

## Logs de un contenedor.

```bash
docker logs [container]
```

Si queremos seguir los logs del contenedor en tiempo real, usamos el parámetro `-f`.

```bash
docker logs -f [container]
```

***

## Eliminar contenedores.

```bash
docker rm [container]
```

Si el contenedor a eliminar está en ejecución, forzamos su eliminación con el parámetro `-f`.

```bash
docker rm -f [container]
```

***

## Más parámetros.

Todos estos subcomandos de docker tienen varios parámetros que podemos usar, si quieres consultarlos usa el parámetro `--help`.

```bash
docker [subcomando] --help
```

Por ejemplo, para ver todos los parámetros del subcomando `run`:

```bash
docker run --help
```
