Del curso: Fundamentos de Docker
Conhecendo o Docker Hub - Tutorial de Docker
Del curso: Fundamentos de Docker
Conhecendo o Docker Hub
E aí, pessoal? Agora a gente vai começar a falar sobre as imagens, né? A gente já viu bastante aí sobre containers e sobre volumes, criamos os nossos containers, criamos os nossos volumes, mas agora a gente precisa entender sobre as imagens. Como vocês já viram, a imagem é basicamente aquilo da qual o nosso container é criado, né? Então sempre que a gente cria um container, a gente está instanciando, por assim dizer, uma imagem. E nesse vídeo especificamente eu quero falar sobre o Docker Hub, que você consegue ar a partir de hub.docker.com. O Docker Hub é o Docker Registry oficial aí utilizado pelo Docker, o Docker Registry padrão. Lembrando que o Docker Registry vai ser o serviço, um servidor que vai permitir você armazenar e distribuir as suas imagens Docker. Em uma instalação padrão do Docker e no uso padrão do Docker, como o Docker Registry você vai utilizar o Docker Hub. Então é daqui que toda vez que você executa ali um docker pull, um docker... docker run, por exemplo, é de onde vai vir as imagens que você vai utilizar para poder instanciar os teus containers. Isso não significa dizer que o Docker Hub é o único Docker Registry que dá para utilizar. Você pode inclusive criar os seus próprios... Você pode criar o seu próprio Docker Registry privado ali para armazenar suas imagens Docker. Inclusive, você pode utilizar serviços de cloud para fazer isso. A própria AWS tem um, que é o ECR, se não me falha a memória. Deixa eu até pesquisr aqui. Amazon ECR. Isso, é isso mesmo. É o Amazon Elastic Container . Então é um sistema de container da própria AWS, da Amazon Web Service, que você pode contratar para armazenar suas imagens Docker de maneira privada. Mas na maioria das vezes você vai aqui utilizar o Docker Hub. E não necessariamente o Docker Hub. vai... você vai ter que colocar imagens públicas apenas. Você pode inclusive criar suas próprias imagens e publicar elas dentro do Docker Hub de maneira privada, inclusive, beleza? Mas é aqui que está as nossas imagens. Inclusive, se eu vier aqui nessa parte de busca, procurar por Nginx, nós vamos ter justamente a imagem que nós amos a utilizar durante as últimas aulas, né? Então, se eu clicar aqui nessa imagem, Nginx, é a imagem que a gente está utilizando, veja que, inclusive, ela é uma imagem Docker oficial. Existe essa verificação, tá? Então existem as imagens que são oficiais criadas pelo próprio pessoal do Docker e existem imagens que são criadas por publicadores verificados, que é esse Verified Publisher. Então é alguém ali que é verificado pelo Docker como alguém que vai colocar imagens ali que são seguras. E você tem também os Sponsored OSS, que são pessoas que publicam imagens dentro do open source e são... recebem ali um fundo, digamos assim, do Docker para manter esses projetos, porque são projetos considerados importantes para o open source. Então veja que aqui dentro, quando eu pesquisei por Nginx, veio a imagem oficial do Nginx, a gente pode clicar nela e ter mais informações. O ponto que eu acho que é importante mencionar aqui. Toda imagem, ela possui o que a gente chama de tags, que são basicamente o versionamento dessa imagem. Então a gente sempre utilizou o comando para criar um container a partir da imagem Nginx. E a gente formou apenas isso. Toda vez que a gente coloca apenas o nome da imagem, sem ar nenhum outro tipo de informação, como a informação da tag, é feito o de uma imagem com uma tag específica chamada de latest, que é a versão mais recente daquela imagem, né? Se eu vier aqui em Tags, veja que existem várias. Então tem latest, que é sempre a última versão dessa imagem que foi publicada, e aí a gente tem várias outras versões específicas. Então a gente tem o stable, aqui para o caso da Nginx, isso não é regra, tá? Muda de de imagem para a imagem que você tiver olhando. Mas existem várias versões específicas aqui dessa imagem. Inclusive que vão estar diretamente relacionada com a versão do Nginx que essa imagem está utilizando. Dentro dessa imagem, dentro dessa tag, a gente tem mais informações aqui, como, por exemplo, conseguir visualizar quais são as camadas que essa imagem vai executar. A gente consegue verificar de qual imagem que ela é baseada e qual a imagem final que ela vai gerar. Possíveis vulnerabilidades que já foram encontradas dentro dessa imagem. Os pacotes que essa imagem específica utiliza. Aqui, por exemplo, na parte de imagens, quando eu to vendo aqui uma versão específica, eu consigo, inclusive, aqui, por exemplo, na Nginx latest, visualizar no github qual que é o código ali que está gerando essa imagem, tá? Então esse aqui basicamente é o código que gera aquela imagem do Nginx latest, tá? Mas esse arquivo específico aqui do Dockerfile a gente vai ver um pouquinho mais na frente quando estiver criando as nossas próprias imagens. Então, sempre que você tiverm assim, querendo criar um container Docker e tiver em dúvida de qual imagem, você sempre vai vir aqui para o Docker Hub para explorar as imagens disponíveis. Entã, digamos que eu to querendo desenvolver uma aplicação utilizando a linguagem Python, então vou vir aqui e vou pesquisar por Python. Então vou encontrar, por exemplo, aqui o container oficial do Python, e aí vou conseguir ter as informações. Então geralmente essas imagens, elas vão ter uma documentação já na sua página inicial que vão te dar informações, como, por exemplo, quem que mantém essa imagem, onde é que você pode encontrar ajuda para tirar dúvidas, quais são as tags que são atualmente disponibilizadas para essa imagem específica. Então, por exemplo, aqui no caso do Python, a gente tem desde imagens com tags que vão ter a versão 3.12 do Python, até versões mais antigas, como a 3.7. Vamos ter também guias de referência sobre como utilizar essa imagem. O que que essa imagem faz e como é que você pode, inclusive, já exemplos de comandos para criar containers para essa imagem específica, para diferentes casos de uso. Então aqui a gente tem, por exemplo, o comando para criar uma imagem Docker desse container, dessa imagem, dessa imagem em Python, com Python 3, com Python 2. Como você pode trabalhar com múltiplas versões do Python dentro de uma mesma imagem. E geralmente ele também a informações sobre as variantes dessa imagem. Então a gente tem aqui, por exemplo, o Python e a variante com a versão. E aí você tem a versão do Python-slim, a versão do Python-Alpine. E aqui no caso do Python a gente também tem o Windows Server Core. Então são diferentes variantes dessa mesma imagem. Um ponto que eu acho interessante também falar é esse termozinho aqui, Alpine. Vocês vão encontrar muito esse termo ao pesquisar imagens aqui dentro do Docker Hub, tá? Então é muito comum você ter uma tag, que é ali alguma versão específica "-Alpine". Geralmente essas imagens são imagens de linguagem, são imagens ali de linguagem como Python, Java, Node, Go lang e por aí vai. E esse Alpine é basicamente uma versão do Linux que ela é mais simples, tá? Ela tem menos coisas ali dentro dela. Então ela consequentemente é menor e mais performática. Na grande maioria das vezes a gente acaba utilizando essas versões -Alpine, tá? Aí só para mostrar para vocês essa questão da tag, como é que eu faço para usar uma tag específica, eu vou abrir aqui o terminal. Então, olha só, nós temos aqui a imagem do Python. Então vou criar um container. Eu vou fazer o na verdade dessa imagem. Então a gente já sabe que para fazer o de uma imagem, é o docker image pull, ou então o docker pull. Então vou ar aqui apenas o Python. Então olha só, ele já vai utilizar por padrão a tag latest, ou seja, vai pegar a versão mais recente dessa imagem que está dentro do Docker Hub e vai fazer o dessa imagem aqui para gente dentro das camadas aqui que ele precisa baixar, que ainda não estão disponíveis em outras imagens Docker que eu já tenho na minha máquina. Então ele finalizou aqui o . Se eu executar aqui um docker image, docker image ls. Docker... Opa! docker imagem ls. Eu tenho então aqui a minha imagem Python na sua tag latest, a versão mais recente. E aí digamos que eu quero baixar uma versão específica. Então vamos lá. Eu quero baixar, por exemplo... Deixa eu pegar aqui uma tag legal para gente usar. Deixa eu pegar por tags. Vou botar aqui, eu quero a 13.11 -Alpine. Vou pegar esse daqui. 3.11-alpine. Ela foi atualizada 23 dias atrás. Então eu posso fazer aqui um Docker Pull Python. E aí para eu informar a versão, né, essa tag, eu coloco dois pontos. Então primeiramente está vindo aqui qual é o nome da imagem que eu quero fazer o , dois pontos depois a tag. E aí a tag que eu vou utilizar. 3.11-alpine. Então olha só, ele já viu aqui qual é a tag que eu to utilizando, e está fazendo o pulling dela. Veja que foi bem mais rápido porque muitas das camadas que ele vai utilizar nessa imagem aqui do Python 3.11-alpine, já existem na Python latest, tá? Então inclusive ele foi mais rápido para fazer o . E se eu executar agora um Docker image ls ou apenas docker image, também funciona, um atalho ali. Eu vejo que agora eu tenho duas imagens Python. Então tem uma imagem aqui que é o Python latest. Inclusive ela é uma imagem até bem grande, tem um giga de tamanho. E tenho uma imagem aqui do Python 3.11-alpine, que ela já é uma imagem bem pequena, porque, novamente, esse alpine aqui é uma versão do Linux bem mais reduzida, ali com bem menos coisa, só o necessário ali para aquela linguagem funcionar. E geralmente ela também são versões já pensadas para execução em produção, então elas já estão bem redondas ali para serem usadas. Então normalmente elas são bem menores. Então ela só tem 52.1 megabytes, né? Então por isso que é interessante a gente pensar nessa questão da versão e só não utilizar o latest também por questão de performance. Então veja, se eu não prestasse atenção nessa questão da tag, das versões das imagens que eu quero utilizar, eu acabaria utilizando a imagem que é muito grande, de 1 giga, e reduziu para 52 megas. Então tem uma redução bem interessante aí a ser levada em consideração na hora de escolher qual tag ali você vai utilizar. Então é sempre bom dar uma olhada nessa questão das tags, ver ali o que que aquela tag específica vai te entregar de recurso dentro daquela imagem, não só por questões de performance, mas para ver se tem o que é necessário para o que você vai desenvolver, tá? Então, às vezes você tá desenvolvendo uma aplicação que precisa ali de uma versão de uma imagem do Ubuntu, por exemplo, que tenham certos recursos instalados que talvez uma versão alpine não tenha. Então você vai precisar pegar uma versão mais completa. Então é sempre bom dar uma olhada nisso. Tranquilo? Então basicamente é isso que eu queria falar aqui sobre o Docker Hub, que é o Docker Registry oficial utilizado pelo Docker. E também sobre a questão das tags nas imagens. Beleza? Então é isso. Vou ficando por aqui e até o próximo vídeo.
Contenido
-
-
-
-
-
-
Conhecendo o Docker Hub11 min 11 s
-
(Bloqueado)
Conhecendo o Dockerfile e criando a nossa primeira imagem10 min 24 s
-
(Bloqueado)
Disponibilizando uma aplicação com o Docker10 min 6 s
-
(Bloqueado)
Expondo portas da imagem e trabalhando com variáveis de ambiente14 min 28 s
-
(Bloqueado)
Trabalhando com multi-stage builds12 min 4 s
-
(Bloqueado)
Entendendo a diferença entre ENTRYPOINT e CMD14 min 6 s
-
(Bloqueado)
Publicando imagens no Docker Hub9 min 49 s
-
-