Você pode encontrar a palestra de Mark Shuttleworth "Por que precisamos de um contêiner diferente apenas para aplicativos" no Container Camp relevante para sua pergunta. Ele fala geralmente sobre VMs, contêineres e Docker no início, continuando os snaps e como eles se encaixam em cerca de nove minutos. Aqui está o meu resumo:
- Diferentes tipos de contêineres têm a mesma aparência, mas são usados para diferentes propósitos.
- Os contêineres realmente não existem no nível do kernel. Diferentes tipos de ilusões são possíveis. Independentemente, podemos criar ilusões sobre o que os usuários, rede, disco e processos vêem um contêiner.
- Diferentes tipos de contêineres são realmente sobre diferentes classes de ilusões criadas.
- Os snaps são:
- Imutável, mas ainda faz parte do sistema básico.
- Integrado em termos de rede, compartilhe o endereço IP do sistema, ao contrário do Docker, em que cada contêiner obtém seu próprio endereço IP.
- Em outras palavras, o Docker nos dá uma coisa lá . Snaps nos dá uma coisa aqui . Por exemplo, em uma área de trabalho, um snap fornece um aplicativo diretamente.
- Um estalo não pode poluir o resto do sistema. Está em sua própria caixa. Mas ele ainda pode ver (somente leitura) o resto do sistema, o que permite que ele converse e se integre ao sistema.
Você perguntou sobre diferentes casos de uso em comparação com o Docker. Aqui está um que os snaps podem fazer, mas o Docker não pode: aplicativos de desktop. Terceiros podem enviar aplicativos de desktop usando snaps, e os usuários podem instalá-los e atualizá-los com facilidade. Um contêiner do Docker não pode (facilmente) interagir com o usuário graficamente na tela, carregar documentos do diretório inicial do usuário ou fornecer videoconferência pela webcam do usuário. Snaps podem (uma vez com permissão).
Você pode perguntar como isso é melhor do que usar PPAs. Mas, em comparação com o Docker, é como perguntar como o Docker é melhor do que instalar dependências em um sistema manualmente. É melhor, mas exatamente como provavelmente seria melhor respondida em uma pergunta separada, não específica do Docker.