Como copiar/mover um contêiner Docker para outro host

Como copiar/mover um contêiner Docker para outro host
Uma fotografia de uma pessoa trabalhando em uma mesa de computador.

Como os contêineres Docker são pequenas caixas de software, você pode facilmente copiá-los e movê-los de um computador para outro. Pode ser que você tenha trabalhado em uma instância do Docker no seu computador local e tenha decidido movê-la para um servidor mais potente. Ou talvez você queira apenas implantar seu contêiner personalizado em vários computadores, “copiar e colar” por aí. Outras vezes, você pode estar insatisfeito com um provedor de computação em nuvem e querer mudar para um diferente. Aqui, mostramos como mover sua imagem de contêiner Docker existente e volumes de dados de um host Linux para outro.

Salvar imagem do contêiner do host de origem

Comece listando os contêineres Docker disponíveis em execução no seu sistema. No meu caso, quero exportar meu contêiner Nginx Docker para uma nova máquina:

Um terminal destacando os contêineres Docker disponíveis para um sistema.

Encontre o contêiner que você deseja copiar e interrompa a instância:

Um terminal mostrando a saída do comando docker stop.

Um contêiner Docker é construído a partir de uma imagem inicial genérica. Com o tempo, você adiciona suas próprias alterações a esta imagem base. Os processos em execução dentro do contêiner também podem salvar seus próprios dados ou fazer outras alterações. Para preservar tudo isso, confirme o estado atual do seu contêiner em uma nova imagem:

Um terminal mostrando a saída do comando docker commit criando uma nova imagem a partir daquela em execução no momento.

Observe que se a instância estiver em execução, esta ação irá pausá-la enquanto seu conteúdo é salvo. Se isso for um problema, você pode evitar essa pausa entrando docker commit -p=false NAME_OF_INSTANCE mycontainerimage. No entanto, não faça isso a menos que seja absolutamente necessário. As chances de criar uma imagem com dados inconsistentes/incompletos aumentam neste caso.

Agora, salve a imagem do contêiner Docker recém-confirmada em um arquivo compactado:

Use seu método de transferência de arquivo preferido e copie seu arquivo . tar para o host para onde você quer mover seu contêiner Docker. Por exemplo, o comando a seguir transfere minha imagem Nginx Docker usando scp:

Exportando um volume Docker do seu contêiner

Uma das desvantagens de salvar uma imagem do Docker é que ela não vem com os acessórios do Docker que você configurou junto com seu contêiner. Isso inclui quaisquer montagens de vinculação de rede e os volumes que você criou para armazenar seus dados persistentes.

Para exportar corretamente seu volume de dados, primeiro instale o Git em sua máquina local:

Execute o seguinte comando para baixar o script de exportação de volume para o Docker:

Certifique-se de que o script de exportação tenha os bits de permissão corretos e copie-o para “/usr/local/bin:” da sua máquina.

Teste se o seu script está funcionando corretamente e extraia todos os volumes associados ao seu contêiner:

Um terminal que mostra o processo de backup de quaisquer volumes de dados associados para um contêiner Docker.

Envie seus arquivos de volume do Docker recém-arquivados para sua máquina remota:

Carregar imagem do contêiner no host de destino

Faça login em seu host remoto e execute o seguinte comando para carregá-lo no daemon Docker de sua máquina remota:

Use docker createpara reinicializar sua imagem de contêiner Docker com seus sinalizadores de execução originais da sua máquina de origem. Por exemplo, meu contêiner Nginx Docker originalmente tinha a porta 80 mapeada para a porta 8080 da minha máquina host:

Execute seu contêiner Docker recém-importado:

Confirme se sua imagem importada está funcionando corretamente listando todos os contêineres ativos no sistema:

Um terminal mostrando a mesma imagem de contêiner Docker em execução em um sistema diferente.

Importando um volume Docker para seu contêiner

Para importar um arquivo de volume Docker .tar, primeiro baixe o Git no seu novo host:

Assim como no seu sistema original, baixe o script auxiliar docker-volume.sh, defina seus bits de permissão como “execute” e copie-o para o diretório “/usr/local/bin” da sua nova máquina.

Um terminal mostrando o processo de obtenção e instalação do script Docker Volume para fazer backup de dados associados a contêineres.

Crie um novo contêiner Docker usando seu arquivo de imagem exportado:

Execute o script docker-volume.sh com o original. tar para carregá-lo no daemon Docker do seu novo sistema:

Inicie seu novo contêiner Docker executando o seguinte comando:

Teste se o seu contêiner está carregando o volume corretamente observando seus dados de configuração interna:

Um terminal destacando os dados de volume importados para a nova máquina.

Transferir imagem sem criar um arquivo

Às vezes você pode querer pular a criação de um mycontainerimage.tar.gzarquivo. Talvez você não tenha espaço em disco suficiente, pois o contêiner contém muitos dados. Você pode salvar, transferir e carregar a imagem no host de destino em um comando. Depois de executar o docker commitcomando discutido acima, você pode usar isto:

Deve funcionar também no Windows, já que agora possui um cliente SSH integrado (o PuTTY não é mais necessário).

Continue com o docker createcomando que se aplica à sua situação.

Um terminal mostrando o processo de criação de um novo contêiner Docker após mover sua imagem por meio de um canal SSH.

Por último, inicie seu contêiner Docker recém-importado executando docker startseguido do nome do seu contêiner.

Um terminal mostrando o processo de inicialização de um novo contêiner e confirmando se ele está funcionando corretamente.

Usando o Docker Compose para mover uma implantação inteira do Docker

Com seu plugin Compose, o Docker possibilita construir, configurar e executar programas complexos sem se preocupar com a pilha de software subjacente do servidor. Isso, por sua vez, permite criar implantações de aplicativos reproduzíveis em diferentes sistemas Linux.

Para começar a migrar sua configuração existente do Docker para o Docker Compose, primeiro certifique-se de que o plugin esteja atualmente em seu sistema:

Crie uma nova pasta em seu diretório inicial para a instalação do Docker Compose:

Use seu editor de texto favorito para criar um arquivo “docker-compose.yml” para seu aplicativo:

Cole o seguinte bloco de código dentro do seu arquivo Compose e ajuste-o de acordo com suas necessidades específicas:

Salve seu novo arquivo Compose e execute o seguinte comando para iniciá-lo:

Por último, teste se sua implantação do Compose está funcionando corretamente. No meu caso, testarei meu contêiner Nginx Docker abrindo um navegador da web e navegando até “localhost:8080”.

Uma captura de tela mostrando o contêiner Nginx Docker importado funcionando corretamente em seu novo host de máquina.

Aprender como copiar e mover seu contêiner Docker para outros hosts Linux é apenas uma das poucas tarefas que você pode realizar com sua máquina. Explore este maravilhoso mundo de auto-hospedagem instalando um servidor Minecraft no Linux usando Docker.

Crédito da imagem: Max Duzij via Unsplash . Todas as alterações e capturas de tela por Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *