‫Então, primeiro, pedimos a Charles que postou sua área de arquivos
‫do
‫Docker e deixe-me abrir a tela verde para que possamos ver
‫o arquivo do Docker.
‫E, claro, a realidade é que, quando você acessa os arquivos do mundo real, tudo fica mais confuso.
‫Certo.
‫Todos aprendemos em cursos como o que eu tenho e aprendemos com artigos e documentação de blogs e, depois que chegamos ao mundo
‫real, parece sempre ser mais difícil do que isso.
‫Então, eu estou sempre tentando adicionar mais dessa complexidade aos cursos, mas é muito trabalhoso incluí-los nos cursos,
‫porque você tem que ter muito contexto.
‫É muito sobre o seu ambiente, sua configuração e seu aplicativo em particular.
‫Então pensei ontem à noite. Ei, por que não falamos sobre isso no programa amanhã?
‫Então, se você realmente gosta disso, dê um joinha.
‫Diga-me, no bate-papo ou nos comentários, que você gostaria de mais disso, e nós
‫faremos disso uma coisa normal. Na verdade, revisaremos mais arquivos do Docker, redigiremos e extrairemos algumas das melhores jóias.
‫Tudo certo.
‫Então, primeiro, Charles é e parece que ele vem de sua própria conta e tem uma imagem do HP Apache.
‫Com base nesse nome, vou assumir que é isso que é.
‫E tem uma data e sabe que tem uma versão e uma data no nome lá.
‫Portanto, isso é bastante comum quando você começa a usar suas próprias imagens a partir de imagens e começa
‫a fazer coisas como versioná-las ou data-las ou usar idéias de confirmação nelas.
‫E é uma maneira de garantir que você está usando exatamente a mesma imagem.
‫Novamente aqui, você não apenas usa as últimas em qualquer configuração de produção real, como sempre pode usá-las para
‫brincar e testar.
‫Mas quando você usa coisas reais, sempre vai querer usar essas versões reais.
‫Bem, essa é a imagem do Azure HP, diz Charles.
‫OK legal.
‫E então ele tem aqui uma configuração interessante que eu nunca tinha visto antes e acho que sei por que
‫você está fazendo isso.
‫Portanto, nesta linha de execução, você está fazendo um aplicativo para atualização e depois dizendo: se isso não acontecer, você está dando
‫um OR no bash, o que significa que, se isso não der certo, faça isso.
‫E então você está repetindo.
‫Então, suponho que você esteja em uma rede ou em algum lugar em que você possa ter um problema comum
‫de atualização, ou talvez tenha tido algumas peculiaridades no passado em que houve falha aleatória e
‫se você apenas fiz isso uma segunda vez que funcionaria.
‫É o que acho que você está fazendo lá.
‫E é uma solução eficaz para esse problema, se é para isso que é para isso que serve.
‫Caso contrário, normalmente não vejo esse tipo de configuração, isso normalmente não é o que eu veria lá.
‫Tudo certo.
‫Em seguida, você exporta e é apenas uma pequena alteração de metadados.
‫Então não vai demorar muito. Oh, olhe o que Charles diz, sim,
‫ele diz que é uma imagem da HP tão feliz.
‫E ele falou para melhorar o suporte do Azure e isso corrige um bug.
‫Tão legal
‫que
‫vou mudar que veja, vamos
‫fazer isso alterando as fontes aqui, para que pareça um pouco mais fácil, sim.
‫Um olhar melhor.
‫Sim.
‫Tudo certo.
‫Então aqui está uma coisa interessante.
‫Então você faz o download, faz alguns downloads e instala um pacote que é normal.
‫E você também está instalando um monte de aplicativos do APP aqui.
‫Portanto, a menos que isso seja algo que você esteja testando e apenas tentando descobrir como esse
‫fluxo de trabalho funciona, há muitas oportunidades de otimização, especialmente quando se trata de tamanho.
‫E você também tem uma situação aqui. Podemos ter alguns problemas.
‫Portanto, observe aqui que temos uma linha de execução separada que está executando o aplicativo para obter atualização.
‫Então você não tem essa linha aqui em baixo onde está fazendo toda a instalação.
‫Então você quebrou todas essas etapas.
‫Agora, se você começar a olhar as imagens oficiais, perceberá que elas nunca fazem isso.
‫Eles sempre colocam tudo em uma enorme linha de execução e há algumas razões para isso.
‫A maior razão aqui é estourar dinheiro.
‫Então, quando você pensa em criar uma imagem, há um dinheiro por trás disso.
‫Agora, se você estiver usando algo como Jenkins ou um corredor CCD e tiver desativado
‫o cache, onde ele sempre será construído do zero, sem precisar armazenar em cache, talvez esse não seja o problema desse tipo, mas
‫certamente será um problema se você constrói localmente ou em qualquer sistema
‫mais de uma vez.
‫E é isso que vai acontecer na linha de execução.
‫Digamos que está lá.
‫ESTÁ BEM.
‫E isso nunca muda.
‫Certo.
‫Então, na primeira vez que você criar essa imagem, tudo ficará bem.
‫Digamos que você construa três dias depois.
‫Não vai armazenar esta linha em cache porque esta linha não mudou, lembre-se, e no docker
‫padrão, o bloqueio de cache do comando de construção é quando você altera uma linha.
‫E quando você altera essa linha, tudo nessa linha é executado novamente e todas as linhas após ela.
‫E o que acontece aqui é se você tem essa linha de execução aqui e ela nunca muda, mas então
‫você adiciona, digamos, outro pacote aqui na linha de execução ou talvez você altere as versões e codifique suas
‫versões, o que você também deveria estar fazendo deve codificar as versões de todas essas ferramentas
‫e talvez não zipar, descompactar e enrolar.
‫Mas se sua equipe de segurança for rigorosa, eles esperam que você tenha versões confiáveis e isso é outra coisa que
‫você gostaria de fazer aqui.
‫Mas vamos voltar a esse ponto.
‫Portanto, se você vai fazer essas instalações e alterar uma ferramenta, adicione-a aqui.
‫Pense nisso e obtenha a atualização necessária para baixar um cache de todos os metadados de todos esses
‫pacotes e você instalará esses pacotes mais tarde e se a segunda linha aqui
‫for interrompida pela alteração, ela será executada novamente.
‫Mas ele será executado com base no cache antigo do seu aplicativo para obter atualização.
‫Então, com o tempo, você começará a ter problemas, porque seus pacotes sempre instalarão essas versões
‫antigas. Uma maneira muito melhor de fazer isso é levar todo o seu aplicativo para corrigir as coisas.
‫E isso não está necessariamente relacionado ao download deste pacote aqui.
‫Este é um pacote personalizado.
‫Falaremos sobre isso um minuto.
‫Mas quando se trata dessas linhas aqui, essa linha não terá efeito sobre
‫o tamanho, porque essa linha precisa ser executada na mesma linha que esta ou não vai funcionar.
‫Agora, tudo isso talvez não seja verdade.
‫Se você tiver outro OK, não estará fazendo várias etapas.
‫Uma maneira de se livrar do problema do tamanho é fazer vários estados, mas você não está fazendo o que é o estado
‫e tudo bem.
‫Você não precisa
‫fazer um estágio múltiplo, então
‫vamos ver, o que vai acontecer aqui é que você recomendaria pegar esses aqui,
‫pegar tudo isso aqui, elevando tudo nessa linha.
‫Eu pegaria essa linha de exportação e a colocaria acima, então eu colocaria aqui em cima para que assim seja
‫definido.
‫E isso nunca precisa mudar.
‫E você não precisa se preocupar com isso no meio de tudo para conseguir as coisas certas.
‫E, em geral, é bom que você tenha tudo o que precisa para chegar perto do topo, porque você quer aquelas dependências que geralmente levam muito
‫tempo para instalar, você quer que elas sejam o mais altas possível, para que você
‫não precise executá-las muito frequentemente.
‫Mas eu sou o que eu vou
‫recomendar que você pegue todas essas coisas aqui e coloque aqui agora, você pode fazer isso agora porque este é um download e instalação manual de pacotes.
‫Então, quando você faz isso,
‫há algumas coisas que você pode fazer.
‫Um é esse.
‫Essa linha aqui será uma camada e sempre incluirá o arquivo db, mesmo que você não
‫precise.
‫Portanto, quando você limpa mais tarde, não está limpando essas camadas anteriores.
‫Esse é um dos problemas aqui é que é um arquivo baixado em uma camada e você passa para a próxima linha, que
‫é um ou o próximo comando do Docker. Devo dizer que o próximo comando do Docker será uma
‫nova camada.
‫Pense nisso como um item separado, assim que você interrompe uma linha ou um comando do docker.
‫Você não pode mudar que não pode voltar no tempo e mudar isso.
‫Portanto, a próxima linha ou arquivo de comando e janela de encaixe apenas adicionará itens a ele.
‫Agora, se ele excluir arquivos, apenas os excluirá nessa camada.
‫Essencialmente, ele colocou alguns metadados que dizem: ei, esse arquivo não deveria mais existir ou parece que existe, mas esses arquivos
‫ainda existirão e esses serão apenas para leitura porque todas as camadas acima
‫dele agora são somente leitura e é dessa maneira que essas camadas garantem que eles são idênticos ao que você espera.
‫Portanto, nenhuma camada pode voltar no tempo.
‫Então é isso que você precisa fazer para verificar algumas das imagens padrão do docker e, então, vamos fazer uma olhada em uma das minhas, porque será um
‫pouco mais, talvez um
‫pouco mais fácil de entender.
‫Então, sim, eu não
‫tenho certeza.
‫ESTÁ BEM.
‫Então, o arquivo Docker sim, existe um AP Kay, mas você notará aqui como tudo está em uma linha que é
‫um exemplo ruim, mas vamos fazer um hub e vamos olhar para o Ghost.
‫Então veja este arquivo Debian Docker.
‫Tudo bem, aqui vamos nós.
‫Então, você notará que, nessa situação, está baixando algumas coisas que estão lidando com essas coisas e depois se
‫livrando delas tudo em uma linha de execução.
‫Dessa forma, esses arquivos nunca ficam por aí.
‫Uma vez que a camada é selada e marcada como somente leitura.
‫E isso é fundamental para manter suas imagens pequenas.
‫Aposto que depois de tornar esse material eficiente e combinar esse material, você estará economizando centenas de megas
‫e seu tamanho de imagem.
‫Tudo bem, e a outra coisa aqui é que eu também acrescentaria isso a uma única linha e a outra coisa
‫que eu faria lá: talvez você não precise de obter um anúncio, um anúncio baixará automaticamente um arquivo
‫de a Internet.
‫E se você está muito curioso sobre a diferença entre cópia e anúncio atualmente, nosso padrão é
‫copiar apenas para copiar arquivos do repositório em que você está certo.
‫Então, basta copiar arquivos e o anúncio faz a mesma coisa, mas tendemos a querer usá-lo apenas quando estamos baixando algo
‫da Internet ou o que quer que esteja copiando e queremos que descompacte ou tar da ONU e que isso realmente vai motivo para
‫usar o anúncio.
‫Mas o bom benefício de usar o anúncio é que você não precisaria fazer o que você poderia usar, basicamente,
‫médicos internos. Nós vamos pegar esse arquivo e fazer o download, mas o negativo disso é que, quando você faz essa linha e
‫depois vai para a próxima linha.
‫Esse pacote ainda existirá.
‫Portanto, mesmo que os anúncios sejam muito legais no seu caso, porque você está baixando um pacote que
‫é bom, eles instalarão e você não precisa mais desse pacote.
‫Talvez eu apenas coloque todas as três linhas em uma linha dessa maneira. No final, você poderá
‫excluir esse ponto D. B. arquivo e economize espaço adicional em seu evento final.
‫Então você faria tudo isso de uma só vez.
‫Tudo certo.
‫Isso ajuda.
‫Parece que você está copiando em alguns outros arquivos ótimos que você está usando copiar e não adicionar.
‫Você também está fazendo alguns fabricantes, cópias e certificados.
‫É exatamente assim que eu faria.
‫Você pode tornar isso mais otimizado. Você pode colocar tudo isso em um
‫único comando de execução, geralmente porque, basicamente, é um pouco mais rápido para criar, talvez um segundo mais rápido
‫na sua conta, porque cada uma dessas linhas precisa parar. o contêiner ou crie um
‫novo contêiner monte o restante da imagem e execute esse comando, salve-o em uma nova imagem do
‫contêiner e inicie um novo contêiner.
‫Certo.
‫Portanto, é necessário muito mais trabalho do que apenas executar três comandos rápidos.
‫Então eu posso ter esses em um.
‫Não há economia de espaço seguro ou qualquer coisa lá, mas é apenas
‫uma questão de três comandos que realmente se transformam em um comando de shell longo e sim.
‫Nós temos os portões.
‫Eu provavelmente faria a mesma coisa para torná-los apenas por eficiência.
‫Então, aqui mesmo, você está copiando em duas linhas de cópia diferentes.
‫Você poderia dizer cópia e, em seguida, o caminho para o CRT e, em seguida, o caminho para essa chave.
‫Kay Kay você por que e tem esses dois arquivos e, em seguida, coloque o caminho para o diretório SSL.
‫Desde que ambos estejam no mesmo diretório, é possível ter vários arquivos na linha
‫de cópia única que o ajudarão a facilitar um pouco.
‫Menos linhas tende a ser melhor desde que não sejam muito complicadas.
‫Sim.
‫Você tem algumas coisas padrão do Apache nas configurações que você também pode ter.
‫Não sei quanto.
‫Sim.
‫Estes são estes são realmente estes são bons.
‫Eu
‫acho que isso é bom, sim, faça mais algumas cópias dos arquivos de configuração em alguns deles. Você também pode considerar que
‫esses são arquivos de configuração padrão, mas se você precisar substituí-los e usar um
‫orquestrador usando cubano ou enxame, percebe que você pode usar essa configuração ou em comunidades chamadas mapa de configuração, você
‫pode usar o recurso de configuração e enxame para montar esses arquivos em tempo de execução, para que você
‫não codifique todas as configurações.
‫O ideal é que você não tenha codificação embutida. O SSL está na sua imagem ou se você possui
‫um SSL personalizado, pois deseja armazená-lo no orquestrador ou no Docker e montá-los e quando você executa, porque, idealmente,
‫não deve haver nada secreto. em uma imagem quando você salvá-lo.
‫Então, espero que você faça a mesma coisa aqui, pois você pode combinar esses dois em uma linha. Você pode combinar alguns
‫deles em uma linha. Você provavelmente saberia se esses são todos os x pequenos arquivos desse diretório que você
‫pode copiar. asterisco do diretório, ponto X, quantidade e, em seguida, você pode copiar todos os
‫quatro para lá, é prós e contras, porque se um arquivo extra do Excel
‫aparecer, ele pode ser acidentalmente copiado, mas depende de quão detalhado você quer ser e de como você quer que a linha
‫literal para linhas seja o tipo de coisa versus manter o arquivo mais escuro pequeno e simples.
‫Tudo certo.
‫E então você tem outra cópia, execute sua alteração no diretório de trabalho e, em seguida, obtenha seu
‫ponto de entrada.
‫Agora, normalmente, para você não ter um CRM D.
‫Então, meu palpite é que você está usando o CRM D a partir dessa imagem raiz e isso é ótimo.
‫Não há nada de errado nisso.
‫Um dos desafios que tenho com isso é que as pessoas que estão usando minhas imagens, se eu tiver
‫uma equipe, não saberão como vê-las D.
‫Então, eu apenas repito o CMT, mesmo que seja desnecessário aqui embaixo, porque eles receberão isso e meio que um repo, e eles
‫olharão para ele e, se não forem super experientes no Docker, serão não vai perceber Oh, eu
‫preciso encontrar o arquivo do Docker para o arquivo.
‫A partir disso, é proveniente ou usa a história e volta e olha a história e o tempo para encontrar
‫essa CMT.
‫Então, você pode até colocar isso em apenas um comentário para ajudar as pessoas que talvez estejam visualizando esse
‫arquivo do Docker, mas eu acho que isso porque o ponto de entrada no CMT é tão
‫importante para o que essa imagem do Docker faz adicione n, mesmo que possa ser repetitivo para uma imagem anterior.
‫Novamente, tudo isso são apenas metadados, para que realmente não adicione tempo ou inchaço à sua compilação, em vez de o outro arquivo mudar
‫e os comandos de execução que você faz.
‫Mas, além disso, parece um ótimo arquivo Docker de produção de boa qualidade, no qual você
‫gastou muito tempo, mas acho que, em geral, você pode combinar muitos deles e obter coisas
‫para economizar muito espaço em sua imagem e muito do inchaço e também evitar o problema de atualização de ter uma atualização antiga
‫que basicamente um aplicativo antigo para ganhar dinheiro quando você tenta instalar coisas novas.
‫Eu recomendo que você faça a versão deles e, basicamente, dentro deste comando de instalação, você pode especificar
‫a versão de cada uma dessas ferramentas, talvez isso realmente não importe, mas quando você começar a procurar
‫as bibliotecas de que precisa.
‫Para o Apache para o seu aplicativo real, são apenas mais utilitários para o gerenciamento, não realmente coisas que você
‫usaria em um aplicativo em execução de produção.
‫Certo.
‫Mas neste Apache ao vivo aqui em baixo, eu definitivamente versão que me incomodou com esse bug e
‫com a HP porque um mongo D. B. O driver e a HP alteraram as versões dentro da minha
‫imagem e quebrou, houve um erro e quebrou meus aplicativos de produção porque não o fixei no arquivo docker e basicamente fui para
‫a produção. Apenas um dia reconstruí a imagem em que estava funcionou bem na minha máquina porque minha máquina tinha uma versão
‫diferente, porque não existe, diz que não há versões, você está basicamente recebendo a
‫versão mais recente quando construiu a imagem, por isso é uma esperança aleatória que você obtenha uma boa versão isso
‫funciona.
‫Então você definitivamente recebe um alfinete que eu pessoalmente colocaria em todos eles e atualizo uma vez por mês ou algo
‫assim ou o que sua equipe de segurança exigir.
‫Mas esse é um ótimo arquivo do Docker.
‫Muito obrigado.
‫É claro que sempre há espaço para melhorias e fico feliz que você tenha aparecido para ajudar.