Como copiar/mover um contêiner Docker para outro host
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:
Encontre o contêiner que você deseja copiar e interrompa a instância:
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:
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:
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 create
para 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:
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.
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:
Transferir imagem sem criar um arquivo
Às vezes você pode querer pular a criação de um mycontainerimage.tar.gz
arquivo. 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 commit
comando 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 create
comando que se aplica à sua situação.
Por último, inicie seu contêiner Docker recém-importado executando docker start
seguido do nome do seu contêiner.
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”.
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