qual é a principal diferença entre o Docker e o Snap?

85

No c't recente (infelizmente paywalled ), há um artigo sobre Snap e Flatpak.

insira a descrição da imagem aqui

Isso soa muito semelhante ao Docker, muitos conceitos são os mesmos. Agora, minha pergunta: qual é a diferença entre Snap e Docker? Esses casos de uso são diferentes?

Ivanov
fonte

Respostas:

110

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 . 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.

Robie Basak
fonte
3
Isso não é verdade. O Docker pode interagir com aplicativos da área de trabalho (uma vez que é dada permissão). github.com/jamrizzi/docker-gtk
Jam Risser
2
Isso soa como Sandboxie para Windows. Os programas em área restrita podem abrir caixas de diálogo, acessar todos os arquivos locais, mas quando eles escrevem, eles apenas escrevem em sua área restrita.
feedc0de
1
O que essa ferramenta à qual você vincula faz diferente do que uma janela de encaixe normal? Você pode montar seu soquete x11 na janela de encaixe sem qualquer versão especial.
precisa saber é
1
Não é uma ferramenta, é uma manifestação #
Jam Risser
1
@jamrizzi Parece que o que você faz é simplesmente dar acesso ao docker ao soquete X11 em um script. Isto é bastante longe de ter o usuário envolvido em qualquer maneira neste processo (onde é o diálogo "Docker quer acessar a tela Cancelar ou Permitir.?"?)
Thorbjørn Ravn Andersen