Como os contextos do Docker permitem que você trabalhe com vários hosts
Os contextos no Docker CLI fornecem um mecanismo simplificado para interagir com vários endpoints do Docker. Você pode configurar contextos para cada um dos seus hosts e alternar entre eles rapidamente.
Quando um contexto está ativo, o Docker irá direcionar todos os seus comandos para aquele host. Se você usa principalmente uma instalação local do Docker, mas às vezes precisa iniciar contêineres na produção, os contextos do Docker são uma opção disponível para você.
Qualquer endpoint válido do Docker pode ser transformado em um contexto. Você pode conectar instalações regulares do Docker Engine, clusters Docker Swarm e clusters Kubernetes na nuvem. Cada contexto armazenado contém todas as informações de conexão para o host referenciado.
Criando um contexto
Os contextos são gerenciados com o comando docker context. Você cria novos contextos usando a criação de contexto do docker. Você deve fornecer um nome para o seu contexto, bem como sua configuração de endpoint.
Veja como criar um contexto que se conecta a um soquete Docker exposto por TCP em um host remoto:
contexto docker criar host remoto --docker host = tcp: /// my-remote-host: 2735
Publicidade
Os contextos usam o Docker Swarm como seu orquestrador de contêiner padrão. Você pode definir isso explicitamente usando um sinalizador:
contexto docker criar host remoto \ --default-stack-orchestrator = swarm \ --docker host = tcp: /// my-remote-host: 2735
Para criar uma conexão com o Kubernetes, altere o tipo de orquestrador. Você também deve adicionar a sinalização --kubernetes e especificar o caminho para um arquivo de configuração Kubernetes:
docker context create kubernetes-host \ --default-stack-orchestrator = kubernetes \ --kubernetes config-file = / home / username / . kube / config \ --docker host = unix: /// var / run / docker. sock
Seleção de contextos
O contexto ativo é alternado usando o uso do contexto do docker. Passe o nome do contexto que deseja ativar.
contexto docker usar host remoto
Todos os comandos CLI subsequentes serão executados usando o nó de extremidade fornecido pelo novo contexto. O contexto ativo persistirá automaticamente até que você o altere. Para mudar para um contexto diferente, execute o uso do contexto do docker novamente. Você pode reverter para o contexto padrão com seu soquete Docker local passando default como o nome do contexto.
Você sempre pode substituir o contexto selecionado adicionando a sinalização --context a qualquer comando do Docker:
docker executa ubuntu: último --context remote-host
A variável de ambiente DOCKER_CONTEXT também funciona como uma alternativa ao sinalizador --context. Qualquer um dos mecanismos facilita uma mudança temporária para um contexto diferente sem fazer você executar e reverter um comando de uso de contexto do docker.
Publicidade
Usar a variável de ambiente DOCKER_HOST irá sobrescrever o contexto ativo também. Esta variável força o Docker a usar um determinado endpoint daemon em vez daquele fornecido pelo contexto.
Você pode inspecionar o contexto ativo executando docker context ls. Este comando lista todos os contextos disponíveis em sua configuração CLI. O contexto ativo é destacado com um asterisco. Para excluir um contexto, execute docker context rm, fornecendo o nome do contexto. Não é possível excluir o contexto padrão.
Sincronizando contextos entre máquinas
Os arquivos de contexto são armazenados no diretório de configuração do Docker CLI. Geralmente é $ HOME / . docker no Linux. Você encontrará seus contextos no subdiretório de contextos. Cada contexto obtém sua própria pasta nomeada com um hash exclusivo. Dentro, você encontrará um arquivo meta. json que descreve o contexto. Apenas contextos criados têm arquivos armazenados no disco. O contexto padrão herda as configurações da configuração do daemon do Docker.
Se você deseja sincronizar a configuração do contexto, pode fazer backup da pasta de contextos para movê-la para outra máquina. Você pode usar uma transferência Rsync ou um repositório Git para simplificar as atualizações regulares. Vincular simbolicamente a pasta a um compartilhamento de rede também pode ser uma opção, dependendo de seus requisitos.
O Docker também permite exportar e importar contextos por meio da CLI:
exportação de contexto do docker my-context
Isso criará um arquivo my-context. dockercontext em seu diretório de trabalho. O arquivo inclui o conteúdo meta. json, bem como algumas informações extras, como o nome do contexto. Transfira este arquivo para outra máquina e execute docker context import my-context. dockercontext para carregar a configuração de contexto.
Publicidade
Como alternativa, você pode exportar um arquivo de configuração autônomo do Kubernetes para contextos do Kubernetes:
exportação de contexto docker kubernetes-context --kubeconfig
Isso produzirá um “ kubeconfig ” regular arquivo compatível com as ferramentas do ecossistema Kubernetes, como kubectl. A capacidade de adquirir um arquivo kubeconfig de um contexto do Docker melhora a interoperabilidade do conjunto de ferramentas. Nada no arquivo será específico para a Docker CLI.
Se você precisar editar um contexto, use o comando docker context update. Isso aceita os mesmos sinalizadores da criação de contexto do docker. Se você estiver fazendo atualizações em massa, poderá editar os arquivos meta. json para manipular diretamente seus contextos. Você pode inspecionar um arquivo meta. json de contexto a partir da CLI com o contexto docker inspecionar meu-contexto.
Conclusão
Os contextos do Docker são úteis quando você precisa implantar contêineres em vários ambientes independentes. Você pode configurar contextos para seu soquete Docker local, um servidor de teste de equipe compartilhado e seu servidor Kubernetes de produção.
O Docker tem suporte integrado para as nuvens de contêiner do Microsoft Azure e Amazon ECS, que também podem ser adicionados como contextos. Não há limite para o número de contextos que você pode criar, então você tem boa versatilidade ao mover-se entre seus hosts.
Provavelmente, o maior problema funcional com contextos é a possibilidade de executar acidentalmente um comando no contexto errado. Se você esqueceu que está em seu contexto de produção, executar docker rm database-container pode ter consequências devastadoras. Em caso de dúvida, execute docker context ls primeiro para verificar o que você selecionou.
Nenhum comentário