{"id":549,"date":"2023-09-29T14:35:48","date_gmt":"2023-09-29T17:35:48","guid":{"rendered":"https:\/\/demo.creativethemes.com\/blocksy\/business\/?p=549"},"modified":"2023-09-29T14:35:48","modified_gmt":"2023-09-29T17:35:48","slug":"massa-id-neque-aliquam-vestibulum-morbi","status":"publish","type":"post","link":"https:\/\/www.scttic.com\/?p=549","title":{"rendered":"Criando uma Imagen com Docker"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Vamos criar uma imagem Docker e, em seguida, envi\u00e1-la para o Docker Hub. Aqui est\u00e1 um guia passo a passo:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_1_instala\u00e7\u00e3o_do_docker\">1. Instala\u00e7\u00e3o do Docker:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de come\u00e7ar, certifique-se de que o Docker esteja instalado em sua m\u00e1quina. Se ainda n\u00e3o estiver, voc\u00ea pode baix\u00e1-lo e instal\u00e1-lo a partir do [site oficial do Docker](<a href=\"https:\/\/www.docker.com\/products\/docker-desktop\">https:\/\/www.docker.com\/products\/docker-desktop<\/a>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_2_crie_um_arquivo_dockerfile\">2. Crie um arquivo Dockerfile:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O&nbsp;<code>Dockerfile<\/code>&nbsp;\u00e9 um dos componentes centrais do Docker. Ele \u00e9 um arquivo de texto que cont\u00e9m um conjunto de instru\u00e7\u00f5es usadas para criar uma imagem Docker. A partir dessa imagem, voc\u00ea pode executar cont\u00eaineres Docker. Vamos nos aprofundar um pouco mais:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um Dockerfile \u00e9 composto por uma s\u00e9rie de instru\u00e7\u00f5es e argumentos formatados como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INSTRU\u00c7\u00c3O argumento<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_3_instru\u00e7\u00f5es_comuns_no_dockerfile\">3. Instru\u00e7\u00f5es Comuns no Dockerfile:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>FROM<\/strong>: Define a imagem base a partir da qual voc\u00ea est\u00e1 construindo. Por exemplo, voc\u00ea pode come\u00e7ar com uma imagem do Ubuntu, Node.js, Python, etc.<\/li>\n\n\n\n<li><strong>WORKDIR<\/strong>: Define o diret\u00f3rio de trabalho dentro do cont\u00eainer. Se o diret\u00f3rio n\u00e3o existir, ele ser\u00e1 criado.<\/li>\n\n\n\n<li><strong>COPY<\/strong>: Copia arquivos ou diret\u00f3rios do host para o cont\u00eainer.<\/li>\n\n\n\n<li><strong>ADD<\/strong>: Semelhante ao COPY, mas pode tamb\u00e9m descompactar arquivos locais tar ou fetch URLs.<\/li>\n\n\n\n<li><strong>RUN<\/strong>: Executa um comando dentro do cont\u00eainer. \u00c9 usado principalmente para instalar pacotes ou outras prepara\u00e7\u00f5es.<\/li>\n\n\n\n<li><strong>CMD<\/strong>: Fornece padr\u00f5es para a execu\u00e7\u00e3o do cont\u00eainer. Deve haver apenas um CMD em um Dockerfile. Se voc\u00ea listar mais de um CMD, apenas o \u00faltimo CMD ter\u00e1 efeito.<\/li>\n\n\n\n<li><strong>ENTRYPOINT<\/strong>: Semelhante ao CMD, mas permite que voc\u00ea defina um comando que sempre ser\u00e1 executado quando o cont\u00eainer iniciar, al\u00e9m de permitir que voc\u00ea passe argumentos padr\u00e3o que podem ser substitu\u00eddos.<\/li>\n\n\n\n<li><strong>EXPOSE<\/strong>: Informa ao Docker que o cont\u00eainer ouvir\u00e1 em uma porta espec\u00edfica durante a execu\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>ENV<\/strong>: Define vari\u00e1veis de ambiente.<\/li>\n\n\n\n<li><strong>VOLUME<\/strong>: Cria um ponto de montagem para um volume, que pode ser usado para armazenamento persistente ou para compartilhar diret\u00f3rios entre cont\u00eaineres.<\/li>\n\n\n\n<li><strong>USER<\/strong>: Define o nome de usu\u00e1rio (ou UID) e, opcionalmente, o nome do grupo (ou GID) a ser usado ao executar a imagem e para qualquer instru\u00e7\u00e3o RUN, CMD e ENTRYPOINT.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_4_boas_pr\u00e1ticas\">4. Boas Pr\u00e1ticas:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Minimize o n\u00famero de camadas<\/strong>: Cada instru\u00e7\u00e3o em um Dockerfile cria uma camada. Tente minimizar o n\u00famero de camadas combinando comandos. Por exemplo, em vez de ter v\u00e1rios comandos RUN, tente combin\u00e1-los em um \u00fanico comando RUN.<\/li>\n\n\n\n<li><strong>Evite instalar pacotes desnecess\u00e1rios<\/strong>: Isso ajuda a manter o tamanho da imagem pequeno.<\/li>\n\n\n\n<li><strong>Limpe o cache ap\u00f3s instalar pacotes<\/strong>: Por exemplo, se voc\u00ea estiver usando&nbsp;<code>apt-get<\/code>, pode usar&nbsp;<code>apt-get clean<\/code>&nbsp;para limpar o cache e reduzir o tamanho da imagem.<\/li>\n\n\n\n<li><strong>Use&nbsp;<code>.dockerignore<\/code><\/strong>: Semelhante ao&nbsp;<code>.gitignore<\/code>, ele permite que voc\u00ea especifique arquivos ou diret\u00f3rios que devem ser ignorados ao construir uma imagem.<\/li>\n\n\n\n<li><strong>Sempre especifique uma tag na instru\u00e7\u00e3o FROM<\/strong>: Isso garante que voc\u00ea sempre saiba exatamente qual vers\u00e3o da imagem base est\u00e1 usando.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Em resumo, o Dockerfile \u00e9 uma ferramenta poderosa que permite definir e controlar exatamente como seu ambiente de aplicativo deve ser, garantindo que ele seja consistente, replic\u00e1vel e isolado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, se voc\u00ea estiver criando uma imagem simples com o Node.js:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Use uma imagem base do Node.js\nFROM node:14\n\n# Defina o diret\u00f3rio de trabalho no cont\u00eainer\nWORKDIR \/usr\/src\/app\n\n# Copie o arquivo package.json e package-lock.json para o diret\u00f3rio de trabalho\nCOPY package*.json .\/\n\n# Instale as depend\u00eancias\nRUN npm install\n\n# Copie o restante dos arquivos do projeto\nCOPY . .\n\n# Exponha a porta que o app usar\u00e1\nEXPOSE 8080\n\n# Comando para executar o aplicativo\nCMD &#91;\"node\", \"server.js\"]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_5_construa_a_imagem_docker\">5. Construa a imagem Docker:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No terminal, navegue at\u00e9 o diret\u00f3rio que cont\u00e9m o Dockerfile e execute o seguinte comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t seu_nome_de_usuario\/nome_da_imagem:tag .<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>seu_nome_de_usuario<\/code>: seu nome de usu\u00e1rio no Docker Hub.<\/li>\n\n\n\n<li><code>nome_da_imagem<\/code>: nome que voc\u00ea deseja dar \u00e0 sua imagem.<\/li>\n\n\n\n<li><code>tag<\/code>: uma tag para a vers\u00e3o da imagem (por exemplo,&nbsp;<code>latest<\/code>).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_5_fa\u00e7a_login_no_docker_hub\">5. Fa\u00e7a login no Docker Hub:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de enviar sua imagem para o Docker Hub, voc\u00ea precisa estar autenticado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker login<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Insira seu nome de usu\u00e1rio e senha do Docker Hub quando solicitado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_6_envie_a_imagem_para_o_docker_hub\">6. Envie a imagem para o Docker Hub:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s a autentica\u00e7\u00e3o bem-sucedida, voc\u00ea pode enviar sua imagem para o Docker Hub usando o seguinte comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker push seu_nome_de_usuario\/nome_da_imagem:tag<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_7_verifique_no_docker_hub\">7. Verifique no Docker Hub:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s o upload ser conclu\u00eddo, acesse sua conta no [Docker Hub](<a href=\"https:\/\/hub.docker.com\/\">https:\/\/hub.docker.com\/<\/a>) e verifique se a imagem foi enviada corretamente. Voc\u00ea deve ver sua imagem listada em seus reposit\u00f3rios.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_8_opcional_configura\u00e7\u00f5es_de_visibilidade\">8. (Opcional) Configura\u00e7\u00f5es de visibilidade:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Por padr\u00e3o, as imagens enviadas ao Docker Hub s\u00e3o p\u00fablicas. Se voc\u00ea deseja tornar sua imagem privada, pode fazer isso atrav\u00e9s das configura\u00e7\u00f5es do reposit\u00f3rio no Docker Hub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E \u00e9 isso! Agora voc\u00ea criou uma imagem Docker e a enviou para o Docker Hub. Sempre que precisar usar essa imagem em outro lugar, basta pux\u00e1-la do Docker Hub usando o comando&nbsp;<code>docker pull<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vamos criar uma imagem Docker e, em seguida, envi\u00e1-la para o Docker Hub. Aqui est\u00e1 um guia passo a passo: 1. Instala\u00e7\u00e3o do Docker: Antes de come\u00e7ar, certifique-se de que o Docker esteja instalado em sua m\u00e1quina. Se ainda n\u00e3o estiver, voc\u00ea pode baix\u00e1-lo e instal\u00e1-lo a partir do [site oficial do Docker](https:\/\/www.docker.com\/products\/docker-desktop). 2. Crie [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":736,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[6],"tags":[],"class_list":["post-549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriais"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/posts\/549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scttic.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=549"}],"version-history":[{"count":4,"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/posts\/549\/revisions"}],"predecessor-version":[{"id":735,"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/posts\/549\/revisions\/735"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.scttic.com\/index.php?rest_route=\/wp\/v2\/media\/736"}],"wp:attachment":[{"href":"https:\/\/www.scttic.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scttic.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scttic.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}