---
# System prepended metadata

title: Docker

---

# Docker

- **Criação de ambientes isolados (container)**
    - São ambientes que não vão interferir no funcionamento de outras tecnologias ou ferramentas do servidor.

- **Containers expõem portas para comunicação**

### Principais conceitos

- **Imagem**
    - São serviços, ferramentas ou tecnologias que podem ser colocadas dentro de containers. Exemplos: PostgreSQL, MySQL, Redis.
    
- **Container**
    - Um Container é uma instância de uma imagem.

- **Docker Registry (Docker Ruby)**
    - Registro onde se localizam as imagens do Docker.

- **Dockerfile**
    - Receita de uma imagem.

### Exemplo de inicialização

```dockerfile=
# Partimos de uma imagem existente
FROM node:10

# Definimos a pasta e copiamos os arquivos
WORKDIR /usr/app
COPY . ./

# Instalamos as dependências
RUN yarn

# Qual porta queremos expor?
EXPOSE 3333

# Executamos nossa aplicação
CMD yarn start
```

### Comandos Docker CMD

```dockerfile=
# Criando uma instância
# --name <image_name>
# -e <environment_variables=example>
# -p <local_port:container_port>
# -d <image:version(optional)>
docker run --name example_posgres -e POSTGRES_PASSWORD=ex -p 5432:5432 -d postgres

# Container e status
docker ps

# Listar todos os containers e status
docker ps -a

# Logs
docker logs <id_image>

# Iniciar docker
docker start <id_image/name_image>
```
---

#### Imagens para docker

https://hub.docker.com/search?q=