# 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=