Eu sou totalmente novo no Docker e gosto do conceito de isolamento dos diferentes processos em diferentes ambientes, principalmente o fato de que você pode testar algo em um container sem poluir seu sistema básico. Agora estou planejando passar pelo grande projeto para mover meu servidor doméstico para uma configuração do Docker.
Minha configuração existente
- Servidor executando o Ubuntu (com um DE para configuração simplificada, mas eu poderia desistir disso)
- sistema instalado em um único SSD SATA, 2 matrizes de discos (cada um dos 3 discos, respectivamente 4TB cada e 3TB cada, no Software Raid 5 usando mdadm), montados em
/share
e /share2
.
- Plex Media Server: algumas bibliotecas estão em um compartilhamento, algumas no outro, os dados do Plex também estão no compartilhamento
- Servidor Samba: para compartilhar com a múltipla máquina Windows em casa
- Crashplan: usado para fazer o backup de todos os 2 arrays
- Insync: usado para sincronizar meu Google Drive em um dos compartilhamentos para que eu também possa acessar localmente por meio do Samba
- servidor da Web: usado em alguns testes de sites pequenos
- Serviços de rede: Estação de download de transmissão, SickRage, Unify Network Controller
O alvo
Então, se eu entendi bem, devo usar a seguinte arquitetura:
- Ubuntu como sistema operacional host (reutilize o existente, vou fazer algumas limpezas para fazer)
- mdadm instalado no sistema operacional host (já existente e configurado)
- Host do Docker com os seguintes contêineres
- Servidor Samba
- Plex Media Server
- Crashplan
- Insync
- Servidor da Web
- Transmissão
- SickRage
- Unificar o controlador de rede
As perguntas inevitáveis
Minhas perguntas são:
- A arquitetura básica está correta? (basicamente, eu consegui o jeito que funciona?)
- Os dados serão compartilhados corretamente entre os contêineres? Por exemplo, eu atualizo um arquivo através do Samba, depois o contêiner Crashplan e o container Insync o sincronizam com o Google Drive. Eu vi que deveria estar OK, mas os diferentes artigos que encontrei estavam sempre dizendo: execute um contêiner que altere os dados e, em seguida, execute o segundo contêiner, ele vê os dados modificados. Mas os contêineres não estavam funcionando juntos , então tenho uma dúvida aqui.
- Agora vem a questão complicada sobre a transição. Eu encontrei lá (veja a segunda nota) que não devemos altere os dados no volume do host, caso contrário, ele será corrompido. Não poderei alterar tudo de uma vez, gostaria de implementar um contêiner, depois, quando ele estiver OK, vá para o próximo e assim por diante. Estou ferrado e realmente preciso preparar todo o recipiente e fase de uma só vez?