pt_BR/Docker - Debian Wiki


A inclusão no grupo Docker é mais perigosa do que sudo

O daemon Docker tem setUID root e, por design, permite fácil acesso como root ao sistema de arquivos da máquina. Isso torna trivial para um(a) usuário(a) mal-intencionado(a) ler e alterar arquivos sensíveis do sistema, ou que um(a) usuário(a) descuidado(a) permita que um aplicativo mal-intencionado em um contêiner faça isso. O acesso aos comandos Docker efetivamente concede poder de root completo.

Além disso, o Docker não tem nenhum equivalente à verificação de senha do sudo, o que significa que uma exploração de execução de código arbitrário bem-sucedida contra um(a) usuário(a) que está no grupo docker conceda efetivamente root para o(a) atacante. Assim, a escolha mais segura é nunca adicionar uma conta de usuário(a) - mesmo a sua própria - ao grupo docker, de modo que os comandos Docker só possam ser usados via sudo.

Podman pode ser uma alternativa ao Docker

Os comandos de linha de comando do Docker podem ser emulados pelo pacote Podman (especialmente com o pacote podman-docker). Podman não precisa usar o comando sudo, nem executar o daemon setUID root.

Docker é uma solução para gerenciamento de contêineres leves de processos.

O Docker pode ser instalado a partir de repositórios buster (ou mais recentes) (veja o pacote docker.io). O upstream do Docker também fornece pacotes (para múltiplas versões debian): https://docs.dockercker.com/install/linux/docker-ce/debian/

Imagens Debian estão disponíveis no repositório oficial docker.io, mas você também pode criar alguns você mesmo(a) (veja mais detalhes sobre ambas as opções abaixo). Na terminologia Docker, uma imagem é um objeto que você pode baixar e reutilizar para instanciar novos contêineres.

Imagens prontas do repositório Debian oficial docker.io

Imagens Debian fornecidas noss repositórios oficiais docker.io (suas "imagens oficiais") estão listadas em seu repositório oficial de imagens debian. A forma como essas imagens são geradas agora é muito bem documentada na descrição da imagem (veja abaixo para apontamentos sobre recriação de imagens).

Tudo o que é preciso para construir um contêiner baseado nesta imagem é usar uma declaração como o seguinte em um Dockerfile:

FROM debian:sid

No entanto, você pode não confiar que o(a) mantenedor(a) tenha feita coisa certa para você. Veja por exemplo https://joeyh.name/blog/entry/docker_run_debian/

Criação de imagem base manualmente

Veja ?Cloud/CreateDockerImage para um procedimento detalhado (semelhante ao usado para as imagens prontas), usando a clássica ferramenta Debian debootstrap.

Claro, você precisará nomear essa imagem da maneira preferida, para reutilizá-la em Dockerfiles posteriores, por exemplo, com:

FROM YOURUSER/minbase:sid

Executando serviços dentro de contêineres Docker

Veja o artigo arquivado https://www.debian-administration.org/article/698/Automating_the_creation_of_docker_images para uma descrição de como automatizar a criação de imagens para serviços que executam o Debian, que descreve uma maneira de garantir que os serviços sejam iniciados corretamente por runit dentro dos contêineres.

Você também pode estar interessado na adaptação Debian de baseimage-docker feita por obergix, que também usa runit para controlar serviços executados dentro de um contêiner.

John Goerzen tem um conjunto de imagens Debian que apresentam um sistema padrão init completo, cron, servidor SMTP, etc., em cerca de 11MB de RAM. Estes estão disponíveis para jessie, stretch, buster e sid, e são discutidos em um post de blog.

Veja também


CategoryVirtualization | CategorySoftware | CategorySystemAdministration