Salve, Deus, beleza? Continuamos essa saga aqui no nosso módulo de Docker. Na última aula, nós aprendemos a construir uma nova imagem. E agora, como que nós fazemos para distribuir essa imagem para que outras pessoas possam usar? Como nós já conversamos em aulas passadas, o Docker Hub é um dos serviços da Docker que permite que o uso das imagens seja muito fácil pelo repositório de imagens. Então, nós podemos criar uma conta lá e distribuir as nossas imagens. Eu posso tanto ter essa imagem de forma pública, que todo mundo consegue acessar, como o Endangenex que a gente viu na aula passada, ou uma imagem privada ali, que a sua equipe, a sua empresa ou somente você possa baixar. Então, nessa aula, nós vamos aprender como publicar imagens no Docker Hub, mas eu já quero deixar aqui um aviso claro, que quando a gente está falando dessa publicação, esse repositório de imagens, normalmente a gente chama de registry, ou de images registry, ou container registry. E o Docker Hub não é o único. Você pode ter um repositório de imagens locais, você pode criar um privado seu na internet. A Docker não te amarra, não tem nenhuma prisão quanto a isso. Então, vamos lá. Eu estou com o meu Docker Hub aberto, inclusive, recentemente, a Docker permite que você faça o login com redes sociais, que facilita o login. Então, cria sua conta se você não tem. E aqui você tem no seu Dashboard, no seu Home, todas as imagens. Eu tenho aqui algumas imagens que eu vou distribuindo aí, principalmente públicas que estão aqui por conta das aulas. A gente já deu uma navegada do Locker Hub, então como que a gente faz para publicar a nossa imagem? A primeira coisa que você vai fazer é saber qual é o nome do seu usuário, igual o meu que está aqui, que é Argentina Luiz. Deixa eu até mover a janelinha aqui para o lado, porque está em cima da minha foto. Você vai em Account Settings. Então, aqui em Security, nós vamos ter os tokens. A gente tem que autenticar o CLI do docker pelos tokens. Então você vai gerar um novo token. E aí nós temos que fazer aqui o login. Deixa eu excluir esses terminais. Deixa eu excluir esses terminais. A gente vai fazer um docker login, menos o seu usuário. E aqui em password, não vai ser o seu password da sua conta lá, vai ser justamente o token, porque hoje em dia precisa ser esse token para tornar a autenticação mais segura. E lembre-se de habilitar também o Two Factor Authentication para ter mais segurança também. Isso é primordial. Na última aula, vamos pegar aqui o que a gente fez. Nós fizemos inclusive fiz todos os builds, matei todas as imagens que eu tinha. Vamos gerar aqui um novo build. Nós temos a nossa imagem mais site que eu queira distribuir ali, o meu site, para outras pessoas poderem utilizar. Eu não consigo publicar essa imagem com esse nome, porque você vai publicar como se fosse no GitHub. Toda vez que você gera ali um repositório, você vai publicar, como se fosse no GitHub, toda vez que você gera ali um repositório, vai ser o seu usuário barra o seu repositório. Então, o nome da imagem precisa ser prefixado pelo seu nome de usuário barra o nome da imagem. Tem outro padrão, por exemplo, como o Indie Next, como essas imagens oficiais, que são contas que são validadas, aí é outra história. Mas a gente que é mero mortal tem que ser exatamente dessa forma. Então, a gente vai ter que fazer aqui, não tem problema eu ter os builds locais, mas a gente vai precisar fazer um novo build. Então, aqui eu vou colocar Argentina Luiz, aí coloco a tagiz. Aí coloca a tag que eu quiser. A tag é você que controla. Pronto. Então agora eu vou ter duas imagens. É a mesma coisa, mas essa aqui está com nome diferente. E aí para publicar é bem simples. A gente faz um dockerhub push argentinaluiz mais site. Ele vai fazer a publicação. Então Docker Hub, Push, Argentina, Luiz, My Site. Ele vai fazer a publicação. Então, ele vai pegar o que a gente chama de layers dessa imagem e fazer essa publicação. Que eu acredito que não deva demorar. Pronto. Então, está vendo que não deva demorar. Pronto. Então, está vendo que ele publica aqui layers e até pegou uma outra imagem que eu tenho aqui para poder usar como referência. Essas camadas, depois a gente vai entender como isso funciona, elas servem ali para poder escrever cada passo que você tem no Dockerfile, ele vai gerando uma camada com os arquivos. Isso aqui tem vários benefícios. Por exemplo, na hora que você faz o push, se ele já tiver uma camada lá, ele não sobe. Essa camada sua pode ser bem grande, isso não seria produtivo você ficar subindo alguma coisa que poderia ter aqui vários megas então ele já vê que tem uma camada lá não sobe, passa pra próxima então acaba subindo a sua imagem quanto a gente conseguir subir a imagem mais rápido vai ser melhor principalmente quando você estiver fazendo um build você vai lembrar disso aí. Agora a gente pode vir aqui na minha conta. Deixa eu vir aqui no meu profile. Então, eu tenho aqui a minha imagem que eu acabei de subir, eu posso acessar ela. Posso adicionar também como se fosse um readme. E esse aqui é o comando, se eu quiser fazer apenas... A gente aprendeu aqui no curso a fazer o run, que ele vai criar o container puxando a imagem, se não existe localmente, mas se eu quero apenas baixar a imagem. Aí eu decido quando eu vou rodar. Aí eu faço somente o pull. Aqui eu vou ter o latest, que é a imagem que eu subi. A arquitetura dela, que é o Linux MD64. Em compressão, a imagem tem 22 MB, em compressão fica apenas 9. Ao clicar nisso aqui, que é muito legal, a gente vê aqui como se fosse o Dockerfile, mas aqui são os layers, todos aqui são os layers da minha imagem, que daqui para cima é tudo baseado no próprio Nginx. A nossa camada é apenas o copy, a cópia ali do index.html. Então, voltando para cá, se eu tiver uma versão específica que eu fiz o build, vamos supor que eu fiz aqui o build da versão v2, então a gente faz o push do v2. Olha como vai ser rápido. Está vendo? Layer já existe, já existe, pronto, acabou. Na verdade, essa v2 e a latest vão ser a mesma imagem. A gente vê que o digest dela é a mesma coisa. Maravilha. Vamos dar uma olhadinha aqui sobre essa questão dessas camadas. Isso é bem interessante. Se eu digitar assim, docker history, passando argentinaluiz mysite, a gente consegue ver o histórico das alterações dessa imagem, que vai acabar resultando nesses layers. Então, pegando essa imagem nossa, tem aqui, desde a primeira criação dela, aí foram adicionando variáveis de ambiente, copiando arquivos, e a nossa está aqui em cima, essa última aqui. Como eu já tinha falado para vocês, essa ideia de repositório de imagens, que a gente chama de Image Hash Stream, não é única do Docker Hub, a gente pode ter onde a gente quiser, mas tem um lugar que eu vou deixar para vocês poderem brincar com ele, que é muito simples, Hub, a gente pode ter aonde a gente quiser, mas tem um lugar que eu vou deixar para vocês poderem brincar com ele que é muito simples, inclusive, de trabalhar, que é o GitHub Packages. Vamos dar um exemplo aqui, pegando o tutorial de instalação lá do WSL. Vamos supor que eu tivesse alguma coisa aqui que fosse geral numa imagem que eu queira distribuir, eu posso distribuir através do GitHub sem publicar no Docker Hub. E eles vão ficar aqui. Então, são imagens públicas. O GitHub Packages é concorrente do Docker Hub. Para imagens públicas, você não paga. Se você quiser uma imagem privada, aí tem plano aqui. você não paga. Se você quiser uma imagem privada, aí tem plano aqui. Aí tem plano, mas uma vantagem interessante de trabalhar com o GitHub Packages, nos seus processos de CI, você consegue muito mais velocidade para poder gerar essas imagens, porque elas vão estar dentro do próprio GitHub, ele com o GitHub Actions, então acaba sendo bem interessante. Então dê uma olhadinha também aí, às vezes você tem algum projeto open source, você vai encontrar inclusive vários projetos open source que distribuem às vezes no Docker Hub e distribuem aqui também com o GitHub Package. Então, pessoal, vamos evoluir nossa saga. É isso aí, até a próxima.