Introdução
O Marsh House está entregando A river remembered, River edition 2, a um Engine receptor isolado do registro. Já existe um pacote de entrega, mas ele salva apenas a imagem web. Repare-o, carregue as duas imagens no receptor e use a exposição completa depois que sua origem for parada.
Este laboratório independente prepara sua própria origem, arquivos e receptor; não precisa de nada da VM anterior. Você deve ter aprendido a montar pacotes, as relações do Compose fornecido e a diferença entre tags e IDs de imagem em Pack the Exhibition, ou ter conhecimentos equivalentes. O Docker e o Compose estão prontos. Você aprenderá contextos explícitos, carregamento no lado receptor e inicialização offline.
Use Workstation, Source Exhibition e Receiving Exhibition. Os dois Engines têm sockets, processos containerd e armazenamentos de imagens distintos, mas compartilham o kernel desta VM; este é um limite controlado de recepção, não duas máquinas físicas nem uma alegação de recuperação completa de desastres. Reserve cerca de 45 minutos para leitura e erros comuns; essa é uma estimativa do autor.
Examine o limite de recepção
Nesta etapa, você distinguirá os dois Engines antes de alterar qualquer um deles. Comece em Source Exhibition. Abra Pocket compass e Crossing ledger, leia seus registros e baixe suas fichas de campo. Observe River edition 2 na página da coleção. Receiving Exhibition atualmente mostra Exhibition not running, com HTTP 503: ela não toma emprestada a página de origem.
Mude para Workstation, que inicia em /home/labex/project/exhibition-handoff:
cd /home/labex/project/exhibition-handoff
cat release.json
As tags exigidas são field-notes/web:receive e field-notes/api:receive. O packet preparado tem a coleção e o arquivo Compose com caminho relativo, mas apenas uma imagem em images.tar.
Um contexto Docker nomeia uma conexão com um daemon. context create abaixo registra uma conexão com o socket Unix do receptor; não cria um novo Engine nem altera o padrão ativo. unix:// é o protocolo de socket local, e o restante do caminho pertence somente ao receptor isolado deste curso:
docker context create receiver --docker host=unix:///opt/labex/dk03/receiver-socket/docker.sock
Se o nome já existir de uma tentativa sua, examine-o com docker context inspect receiver, em vez de mudar o contexto global ou criar outro receptor. Use --context em cada operação para deixar claro seu destino.
docker --context default info --format '{{.ID}}'
docker --context receiver info --format '{{.ID}}'
docker --context receiver image ls
Os IDs dos Engines são diferentes. O receptor tem uma imagem base Python usada por seu serviço de referência não relacionado receiving-desk, mas nenhuma das tags exigidas da exposição. Mantenha intactos esse serviço e o próprio Engine receptor.
O Engine receptor está dentro do contêiner do curso dk03-receiver. Os próximos dois comandos somente de leitura executam ferramentas dentro desse contêiner por meio do Engine de origem. ip route mostra rotas conectadas sem rota padrão. wget tenta uma solicitação real ao registro; -T 5 limita a espera de rede e -O /dev/null descarta qualquer corpo de resposta. Espera-se que essa tentativa falhe com um status diferente de zero porque esse namespace receptor não tem rota para o registro:
docker --context default exec dk03-receiver ip route
docker --context default exec dk03-receiver wget -T 5 -O /dev/null https://registry-1.docker.io/v2/
Leia o erro de conexão. Uma falha de conexão de rede é diferente de um HTTP 404 ou 503 da aplicação. Não adicione uma rota, habilite acesso ao registro nem monte o socket Docker de origem para contornar isso: o pacote deve completar a entrega.
Repare, copie e carregue o pacote
Nesta etapa, você levará as duas imagens exigidas e a coleção local para a pasta receptora. Comece em Workstation. O laboratório anterior de empacotamento ensinou image save, cp e caminhos relativos do Compose. Substitua o arquivo incompleto pelo par exato listado no registro de versão deste laboratório:
docker --context default image save -o packet/images.tar field-notes/web:receive field-notes/api:receive
cat packet/compose.yaml
Confirme que a montagem é ./collection:/collection:ro e que as tags dos serviços terminam em :receive. Seu caminho relativo será resolvido ao lado da configuração recebida. Copie o pacote completo, não apenas seu arquivo de imagens:
cp -r packet /home/labex/project/receiving/packet
ls /home/labex/project/receiving/packet
Na primeira tentativa, esse destino não existe. Se estiver repetindo sua própria cópia, copie o conteúdo com cp -r packet/. /home/labex/project/receiving/packet/, em vez de aninhar outro diretório packet. O diretório-pai receptor também contém desk/, que pertence ao serviço de referência preservado. Não o remova nem sobrescreva.
image load -i importa configurações, camadas e tags de imagens de um arquivo salvo para o Engine selecionado:
docker --context receiver image load -i /home/labex/project/receiving/packet/images.tar
docker --context receiver image ls
As duas tags exigidas devem aparecer agora. Esse receptor não compartilhava o armazenamento de imagens do Engine de origem; salvar uma tag apenas na origem não poderia disponibilizá-la aqui. Se aparecer somente uma tag, volte a release.json, repare o arquivo de imagens salvo do pacote de origem e copie novamente seu conteúdo antes de carregar outra vez.
Abra o receptor sem sua origem
Nesta etapa, você iniciará somente a partir dos arquivos no lado receptor e demonstrará independência. Comece em Workstation. --project-directory define onde o Compose resolve seus arquivos relativos, -p exhibition nomeia somente os recursos da aplicação deste curso, up -d os inicia em segundo plano, --pull never proíbe downloads do registro e --no-build proíbe construir imagens ausentes:
docker --context receiver compose --project-directory /home/labex/project/receiving/packet -p exhibition up -d --pull never --no-build
docker --context receiver compose --project-directory /home/labex/project/receiving/packet -p exhibition ps
Tanto gallery quanto records devem estar em execução. Se o Compose informar que uma imagem está ausente, repare e carregue o pacote em vez de fazer pull. Se a página mostrar Collection unavailable, examine os logs do serviço records com o mesmo prefixo Compose seguido de logs records, compare a pasta da coleção recebida e sua montagem :ro, corrija o pacote e copie-o novamente. Se uma tentativa parcial anterior precisar de substituição, use o mesmo prefixo seguido de down e repita o comando de início mostrado. Isso remove apenas os contêineres da aplicação, não o balcão receptor nem seu Engine.
Mude para Receiving Exhibition, recarregue e use os quatro objetos, suas ilustrações, detalhes e downloads de fichas de campo. Este é o serviço receptor, não uma cópia da página de origem.
Mude para Workstation. docker stop solicita que um contêiner nomeado pare. Pare somente estes dois serviços de origem, deixando o Engine receptor e receiving-desk em execução:
docker --context default stop dk03-source-web dk03-source-api
Mude para Source Exhibition e recarregue: agora deve mostrar Exhibition not running. Mude para Receiving Exhibition, recarregue, abra Pocket compass e Crossing ledger e baixe suas fichas de campo novamente. O receptor ainda deve ter a edição correta, os quatro objetos, todas as ilustrações e os downloads completos. Seu leitor não tem recurso alternativo que use a origem. Uma nova sessão do navegador também deve funcionar, sem páginas anteriormente armazenadas em cache.
Esta é a coleção recebida de River edition 2, ainda disponível depois que a origem para:

Deixe a aplicação recebida em execução. As verificações observam esse estado real e o preservam; uma reprodução isolada adicional carrega seu pacote inalterado em um novo armazenamento sem rede para verificar se a entrega pode ser repetida. Nenhuma verificação preenche para você arquivos ou imagens ausentes do ambiente real.
Resumo
Você usou contextos explícitos para direcionar operações a Docker Engines independentes, reparou um pacote com duas imagens e o carregou no receptor isolado do registro. O Compose iniciou usando a configuração e os materiais do lado receptor, com pull e build desativados. A exposição completa continuou funcionando depois que os dois serviços de origem pararam.



