<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Angelo Brandão</title>
    <description>The latest articles on DEV Community by Angelo Brandão (@angelobms).</description>
    <link>https://dev.to/angelobms</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F454077%2Fda84c698-f828-4fb4-83f4-3d32370c21ac.jpeg</url>
      <title>DEV Community: Angelo Brandão</title>
      <link>https://dev.to/angelobms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/angelobms"/>
    <language>en</language>
    <item>
      <title>Criando seu primeiro projeto Spring Boot 3.</title>
      <dc:creator>Angelo Brandão</dc:creator>
      <pubDate>Sat, 25 Jun 2022 19:01:47 +0000</pubDate>
      <link>https://dev.to/angelobms/criando-seu-primeiro-projeto-spring-boot-3-1p96</link>
      <guid>https://dev.to/angelobms/criando-seu-primeiro-projeto-spring-boot-3-1p96</guid>
      <description>&lt;p&gt;Está mais perto do que nunca do lançamento da versão 3 do framework de desenvolvimento Spring Boot. Sendo assim, decidir escrever esse artigo técnico com o objetivo de demonstrar a criação de um projeto simples utilizando o spring boot. &lt;/p&gt;

&lt;p&gt;A versão 3 do Spring Boot está sendo esperada ansiosamente por muitos desenvolvedores, primeiro por que é o framework mais utilizado na industria de desenvolvimento de software, segundo por que é a versão que dará suporte a versão 17 do Java. &lt;/p&gt;

&lt;p&gt;Para você conseguir finalizar a leitura desse artigo espera-se que você possua o comhecimento básico da linguagem de programação &lt;strong&gt;Java&lt;/strong&gt; do sistema de controle de versões distribuído &lt;strong&gt;Git&lt;/strong&gt;, do &lt;strong&gt;Github&lt;/strong&gt; e do &lt;strong&gt;Maven&lt;/strong&gt;. No final o projeto será versionado no GitHub.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.java.com/pt-BR/download/help/whatis_java.html" rel="noopener noreferrer"&gt;Java&lt;/a&gt;: É uma linguagem de programação e plataforma de computação;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/doc" rel="noopener noreferrer"&gt;Git&lt;/a&gt;: É um sistema de controle de versão distribuído gratuito e de código aberto projetado para lidar com tudo, desde projetos pequenos a muito grandes, com velocidade e eficiência;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.github.com/pt/get-started" rel="noopener noreferrer"&gt;Github&lt;/a&gt;: É uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://maven.apache.org/what-is-maven.html" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;: É uma ferramenta de gerenciamento e compreensão de projetos de software.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Criando o projeto no Github
&lt;/h3&gt;

&lt;p&gt;Acesse seu Github e escolha no item com a imagem "+" ao lado da sua foto do perfil a opção "New Repository". Preencha os campos conforme a seguinte imagem:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farqwsjl2i52hpnrtg7za.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farqwsjl2i52hpnrtg7za.png" alt="Image description" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando pequeno eu era facinado por insetos, então decide fazer uma &lt;a href="https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5es" rel="noopener noreferrer"&gt;API&lt;/a&gt; para eu catalogar os insetos existentes.&lt;/p&gt;

&lt;p&gt;Depois de criar o projeto você irá fazer o clone dele para seu computador através do seguinte comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git@github.com:[seu-usuario-de-login]/insect-service.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Você pode encontrar esse comando no seu projeto conforme demonstrado na imagem:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuoallqomkxb9ors2wt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfuoallqomkxb9ors2wt.png" alt="Image description" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Criando o projeto Spring Boot
&lt;/h3&gt;

&lt;p&gt;O Spring possui uma ferramenta online chamada &lt;a href="https://start.spring.io/" rel="noopener noreferrer"&gt;Spring Initializr&lt;/a&gt; que facilita muito a vida do programado ao criar um novo projeto. A imagem abaixo demostra a ferramenta.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr927rytofbau9r83cu03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr927rytofbau9r83cu03.png" alt="Image description" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segue explicação para cada campo na imagem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt;: Nesse campo você precisa escolher qual ferramenta de gerenciamento e compressão você vai utilizar. Para esse projeto de exemplo irei utilizar o Maven. Haaa, lembrando quê, o Meven também é um gerenciado de dependências do Java assim como o Gradle;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language&lt;/strong&gt;: Selecione a linguagem de programação que você ira utilizar para implementar o projeto. No nosso casa iremos utilizar o Java;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spring Boot&lt;/strong&gt;: Selecione a versão do Spring Boot que será utilizado para criar o projeto. O Spring Boot é um framework que torna fácil a criação de aplicações Spring autossuficientes e robustas, possibilitando a sua execução imediata. Para o nosso exemplo iremos utilizar a versão 3.0.0 (SNAPSHOT);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Metadata&lt;/strong&gt;: São as informações do projeto. Nesse campo você irá informar o Grupo, Artefato, Nome, Descricão, Nome do pacote, tipo de empacotamento e a versão do Java; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependencies&lt;/strong&gt;: Selecione as dependências para o projeto. Como esse é um projeto exemplo muito simples iremos selecionar apenas três dependências, são elas: Spring Boot DevTools, Spring Boot Actuator e Spring Web.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depois que você preencher os dados do seu projeto, conforme imagem abaixo, selecione a opcão &lt;strong&gt;GENERATE&lt;/strong&gt; para criar o projeto. No final será feito o download do projeto como um arquivo compactado para a sua pasta de downloads na sua máquina. &lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8jfd4nfvhv85sp5pcmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8jfd4nfvhv85sp5pcmx.png" alt="Image description" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Descompacte o arquivo dentro da pasta do projeto do github que você fez clone anteriormente. O projeto deverá ter a seguinte estrutura de arquivos:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpuyp1qy79hvv9e1h9lj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpuyp1qy79hvv9e1h9lj.png" alt="Image description" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Criando o primeiro Endpoint
&lt;/h3&gt;

&lt;p&gt;Crie uma classe RestController com um método responsável por responder uma requisição GET, como no exemplo abaixo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package com.bmstech.insectservice;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import static org.springframework.http.HttpStatus.*;

@RestController
@RequestMapping("/insects")
public class InsectController {

    @GetMapping
    public ResponseEntity&amp;lt;String&amp;gt; get(){
        return new ResponseEntity&amp;lt;&amp;gt;("OK", OK);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A classe acima utiliza a anotação &lt;code&gt;@RestController&lt;/code&gt; para informar o Spring Boot que ela é um controller rest e também qual o endereço do &lt;code&gt;endpoint&lt;/code&gt; para acessar os recursos.&lt;/p&gt;

&lt;p&gt;Esta classe possui um método com a anotação &lt;code&gt;@GetMapping&lt;/code&gt; que diz qual método deve ser chamado quando o controller receber uma requisição do tipo &lt;strong&gt;HTTP GET&lt;/strong&gt; em seu endereço padrão &lt;strong&gt;/insects&lt;/strong&gt;. O método retorna uma resposta HTTP com Status 200 (OK) e o corpo da resposta com o valor "OK".&lt;/p&gt;

&lt;h3&gt;
  
  
  Executando o projeto
&lt;/h3&gt;

&lt;p&gt;Execute o comando &lt;code&gt;mvn clean install&lt;/code&gt; para baixar as dependências do projeto através do maven. Depois execute o comando &lt;code&gt;mvn spring-boot:run&lt;/code&gt; para executar a sua aplicação. A mensagem que aparece no final &lt;strong&gt;"Tomcat started on port(s): 8080 (http)"&lt;/strong&gt; significa que a sua aplicação web já está rodando na porta 8080, como observado na imagem abaixo. &lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexb1rwje7h78teyz5e50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexb1rwje7h78teyz5e50.png" alt="Image description" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto, com o projeto em execução vamos verificar se o mesmo esta funcionando como esperamos. Abra o browser de sua preferência e e acesse a URL &lt;a href="http://localhost:8080/insects/" rel="noopener noreferrer"&gt;http://localhost:8080/insects/&lt;/a&gt;. A imagem abaixo demonstra o resultado após acessar a URL.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmow2s160s04hps7d5g6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmow2s160s04hps7d5g6n.png" alt="Image description" width="800" height="107"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Pronto, com tudo funcionando ainda falta fazer o commit das nossas alteraćoes e enviar para o nosso repositório remoto do github. Para isso vamos executar os seguintes comando estando dentro da pasta do projeto:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;git add .&lt;/code&gt;: Esse comando adiciona os arquivos para o stage;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit -am 'Commit initial'&lt;/code&gt;; Faz o commit das suas alterações no seu repositório local;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push -u origin main&lt;/code&gt;: Esse comando empurra suas alterações do repositorio local para seu repositório remoto &lt;strong&gt;main&lt;/strong&gt; no github&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Refeências
&lt;/h3&gt;

&lt;p&gt;Spring Boot - &lt;a href="https://spring.io/projects/spring-boot" rel="noopener noreferrer"&gt;https://spring.io/projects/spring-boot&lt;/a&gt;&lt;br&gt;
Spring Initializr - &lt;a href="https://start.spring.io/" rel="noopener noreferrer"&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;E então, chegamos ao fim de mais um artigo técnico. Espero muito que vocês tenham gostado e aprendido um pouco mais sobre o Spring Boot. Sabemos que existem muitos outros artigos parecido com esse, mas tenho criado como uma forma de ajudar o próximo, e ter um registro onde eu possa encontrar com facilidade as informações necessárias para meu dia-a-dia de trabalho. &lt;/p&gt;

&lt;p&gt;Esse projeto está disponivel em &lt;a href="https://github.com/angelobms/insect-service" rel="noopener noreferrer"&gt;https://github.com/angelobms/insect-service&lt;/a&gt; e será utilizado para outros artigos técnicos que irei escrever sobre Spring.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>spring</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Instalando o Docker Desktop no Ubuntu.</title>
      <dc:creator>Angelo Brandão</dc:creator>
      <pubDate>Sat, 11 Jun 2022 16:06:58 +0000</pubDate>
      <link>https://dev.to/angelobms/instalando-o-docker-desktop-no-ubuntu-241f</link>
      <guid>https://dev.to/angelobms/instalando-o-docker-desktop-no-ubuntu-241f</guid>
      <description>&lt;p&gt;Recentemente a Docker laçou uma versão do Docker Desktop para os sistema operacional Linux, anteriormente só era possível utilizar essa ferramenta nos sistema operacional MAC e Windows. O Docker Desktop é uma ferramenta que permite de forma mais rápida e através de uma interface gráfica conteinerizar aplicativos.&lt;/p&gt;

&lt;p&gt;O melhor de tudo é que você pode utilizar essa ferramenta totalmete de graça, mas não se engane, de graça apenas seguindo os novos itens adicionados no &lt;a href="https://www.docker.com/legal/docker-subscription-service-agreement" rel="noopener noreferrer"&gt;Docker Subscription Service Agreement&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se você for uma pequena empresa (menos de 250 funcionários e menos de US$ 10 milhões em receita anual), educação, projetos de código aberto não comerciais e uso pessoal.&lt;/li&gt;
&lt;li&gt;Para uso profissional em empressas grandes, requer uma assinatura paga mensalmente no valor de US $5;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apesar do Docker Desktop suportar outras distribuições Linux, tais como, Debian e Fedora, ambas da plataforma x86_64/amd64, o objetivo desse artigo técnico é explicar como realizar a instalação numa distribuição Ubuntu da mesma plataforma. Caso você não se interesse em utilizar uma interface gráfica, você pode fazer a instação via linha de comando em um terminal do Ubuntu conforme explicado nesse artigo: &lt;a href="https://dev.to/angelobms/instalando-o-docker-engine-ce-no-ubuntu-379o"&gt;Instalando o Docker Engine CE no Ubuntu&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a instalação no Ubuntu você precisa realizar o &lt;em&gt;download&lt;/em&gt; do pacote &lt;strong&gt;.deb&lt;/strong&gt; ou &lt;em&gt;.rpm&lt;/em&gt;. Nós iremos fazer a instalação utilizado um pacote .deb que pode ser obtido em &lt;a href="https://desktop.docker.com/linux/main/amd64/docker-desktop-4.9.0-amd64.deb?utm_source=docker&amp;amp;utm_medium=webreferral&amp;amp;utm_campaign=docs-driven-download-linux-amd64" rel="noopener noreferrer"&gt;DEB&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Requisitos de sistema
&lt;/h2&gt;

&lt;p&gt;Para uma instalação com sucesso do Docker Desktop, seu host Linux, no caso o Ubuntu, deve atender a seguinte lista de requisitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kernel de 64 bits e suporte de CPU para virtualização;&lt;/li&gt;
&lt;li&gt;Suporte à virtualização &lt;a href="[KVM](https://www.linux-kvm.org/page/Main_Page)"&gt;KVM&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pt.wikipedia.org/wiki/Systemd" rel="noopener noreferrer"&gt;systemd init system&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Ambiente Desktop Gnome ou KDE;&lt;/li&gt;
&lt;li&gt;Pelo menos 4 GB de RAM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Importante&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
&lt;em&gt;O Docker não oferece suporte para executar o Docker Desktop em cenários de virtualização aninhada, por exemplo utilizando uma ferramenta de virtualização como o&lt;/em&gt; &lt;a href="https://www.virtualbox.org/" rel="noopener noreferrer"&gt;VirtualBox&lt;/a&gt;, &lt;a href="https://www.vmware.com/" rel="noopener noreferrer"&gt;VMware&lt;/a&gt;, &lt;a href="https://xenproject.org/" rel="noopener noreferrer"&gt;Xen&lt;/a&gt;, &lt;a href="https://www.qemu.org/" rel="noopener noreferrer"&gt;QEMU&lt;/a&gt; &lt;em&gt;dentre outras. É recomendado que você execute o Docker Desktop para Linux nativamente em distribuições com suporte.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Suporte à virtualização KVM
&lt;/h2&gt;

&lt;p&gt;O Docker Desktop exevuta uma VM (Máquina Virtual) que requer suporte KVM. KVM (para máquina virtual baseada em kernel) é uma solução de virtualização completa para Linux em hardware x86 contendo extensões de virtualização (Intel VT ou AMD-V). O módulo &lt;code&gt;kvm&lt;/code&gt; deveria carregar automaticamente se o host (sua máquina) possui suporte à virtualização. Mas se para o seu caso esse módulo não foi carregado, você vai precisar carregá-lo manualmente executando o seguinte comando, no terminal do seu ubuntu:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

modprobe kvm


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Dependendo do processador da máquina host, o módulo correspondente deve ser carregado executando um dos comando abaixo:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

modprobe kvm_intel  # Processadores Intel

modprobe kvm_amd    # Processadores AMD


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para verificar se o módulo para o processado do host foi carregado e está habilitado, você pode executar o seguinte comando e verificar o resultado, conforme imagem abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febyaoeirb6l3j63ddxru.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febyaoeirb6l3j63ddxru.png" alt="resultado-01"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como no meu caso a minha maquina host possui um processador Intel, podemos observar no resultado que foi carregado o módulo kvm_intel. &lt;/p&gt;

&lt;p&gt;Após o módulo kvm ser carrgado precisamos seguir para o próximo passo que é configurar as permissões de usuário do dispositivo KVM. Para isso primeiro devemos verificar o propriétario de &lt;code&gt;/dev/kvm&lt;/code&gt;, execute:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

ls -al /dev/kvm


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Podemos verificar na imagem que o usuário proprietário é o usuário root, mas é necessário adicionar o seu usuário ao grupo kvm para acessar o dispositivo kvm. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bjlado0te4oxdaaa1co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bjlado0te4oxdaaa1co.png" alt="resultado-02"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Execute o seguinte comando para adicionar seu usuário ao grupo kvm:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo usermod -aG kvm $USER


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h2&gt;
  
  
  Instalação do Docker Desktop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Importante&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Para a instalação é necessário que seja uma versão de 64 bits do Ubuntu Jammy Jellyfish 22.04 (LTS) ou do Ubuntu Impish Indri 21.10. Também é necessário que o Docker Engine CE esteja instalado no Ubuntu. No artigo &lt;a href="https://dev.to/angelobms/instalando-o-docker-engine-ce-no-ubuntu-379o"&gt;Instalando o Docker Engine CE no Ubuntu&lt;/a&gt; eu explico como realizar a instalação.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Abaixo listo os passos que você deve seguir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Desinstale a versão tech preview ou a versão beta do Docker Desktop para Linux:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt remove docker-desktop


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Caso você queira realizar uma limpeza completa, exclua os arquivos de configuração e dados da pasta &lt;code&gt;$HOME/.docker/desktop&lt;/code&gt;, o link simbólico em &lt;code&gt;/usr/local/bin/com.docker.cli&lt;/code&gt; e os arquivos de serviço &lt;code&gt;systemd&lt;/code&gt; restantes através dos seguintes comandos:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rm -r $HOME/.docker/desktop &amp;amp;&amp;amp; \
sudo rm /usr/local/bin/com.docker.cli &amp;amp;&amp;amp; \
sudo apt purge docker-desktop


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Nota&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
&lt;em&gt;Se você instalou o Docker Desktop para Linux tech preview ou versão beta, você precisa remover todos os arquivos que foram gerados por esses pacotes (por exemplo, &lt;code&gt;~/.config/systemd/user/docker-desktop.service&lt;/code&gt;, &lt;code&gt;~/.local/ share/systemd/user/docker-desktop.service&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Adicionalmente, para ambientes não Gnome Desktop, o gnome-terminal deve ser instalado:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt install gnome-terminal


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Instale o pacote .deb que você fez download no inicio da leitura desse artigo, com o comando apt da seguinte forma:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt-get update &amp;amp;&amp;amp; \
sudo apt-get install ./docker-desktop-&amp;lt;version&amp;gt;-&amp;lt;arch&amp;gt;.deb


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Nota&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;No final do processo de instalação, o apt exibe um erro devido à instalação de um pacote baixado. Você pode ignorar esta mensagem de erro.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N: Download is performed unsandboxed as root, as file '/home/user/Downloads/docker-desktop.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Existem algumas etapas de configuração pós-instalação feitas através do script pós-instalação contido no pacote deb, são elas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Definir a capacidade no binário do Docker Desktop para mapear portas privilegiadas e definir limites de recursos;&lt;/li&gt;
&lt;li&gt;Criar um link de /usr/bin/docker para /usr/local/bin/com.docker.cli;&lt;/li&gt;
&lt;li&gt;Adicionar um DNS (Sistema de Nomes de Domínio) para o Kubernetes em /etc/hosts (Explicarei em um artigo posterior a esse o que é Kubernetes).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pronto, o Docker Desktop está instalado, vamos agora iniciar ele pela primeira. :-D&lt;/p&gt;




&lt;h2&gt;
  
  
  Iniciando o Docker Desktop
&lt;/h2&gt;

&lt;p&gt;Siga o seguintes passos para o sucesso e torça para que no final tudo ocorreu bem e você seja muito feliz com sua primeira instalcão do Docker Desktop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Abra o menu &lt;strong&gt;Applications&lt;/strong&gt; (Aplicativos) no Gnome/KDE Desktop e procure pelo &lt;strong&gt;Docker Desktop&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F918q0ooqr9x3apqvjs1q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F918q0ooqr9x3apqvjs1q.png" alt="aplicativos"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Selecione &lt;strong&gt;Docker Desktop&lt;/strong&gt; para iniciar o Docker. Será exibido o &lt;a href="https://www.docker.com/legal/docker-subscription-service-agreement" rel="noopener noreferrer"&gt;Docker Subscription Service Agreement&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Marque a caixa de seleção para aceitar os termos atualizados e clique em &lt;strong&gt;Accept&lt;/strong&gt; (Aceito) para continuar.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;Importante&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Se você não concordar com os termos, o aplicativo Docker Desktop será fechado e você não poderá mais executar o Docker Desktop em sua máquina. Você pode optar por aceitar os termos posteriormente abrindo o Docker Desktop.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Se ocorreu tudo bem depois de você aceitar os termos, o Docker Desktop vai iniciar um Quick Start Guide (guia de ínicio rápido). Este guia é um tutorial para criar uma imagem de exemplo do Docker, executá-la como um contêiner, enviar e salvar no Docker Hub. O &lt;a href="https://hub.docker.com/" rel="noopener noreferrer"&gt;Docker Hub&lt;/a&gt; é uma biblioteca para imagens de contêiner.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4pwkzmh45h2mrrhs8hq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4pwkzmh45h2mrrhs8hq.png" alt="guia"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso queira permitir que o Docker Desktop seja iniciado no login, no menu Docker, selecione &lt;strong&gt;Settings&lt;/strong&gt; (Configurações) &amp;gt; &lt;strong&gt;General&lt;/strong&gt; (Geral) &amp;gt; &lt;strong&gt;Start Docker Desktop when you log in&lt;/strong&gt; (Inicio o Docker Desktop quando você logar).&lt;/p&gt;

&lt;p&gt;E então chegamos ao fim, ufa! Espero que você tenha gostado e estarei a disposição para tirar as dúvidas que aparecer, só deixar um comentário.&lt;/p&gt;

&lt;p&gt;Bons momentos :-)&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Instalando o Docker Engine CE no Ubuntu.</title>
      <dc:creator>Angelo Brandão</dc:creator>
      <pubDate>Sat, 11 Jun 2022 03:10:41 +0000</pubDate>
      <link>https://dev.to/angelobms/instalando-o-docker-engine-ce-no-ubuntu-379o</link>
      <guid>https://dev.to/angelobms/instalando-o-docker-engine-ce-no-ubuntu-379o</guid>
      <description>&lt;p&gt;A finalidade desse tutorial é explicar como instalar o Docker CE em uma distribuição Linux Ubuntu para as versões LTS 22.04, 20.04 e 18.04. O Docker é uma plataforma aberta com um mecanismo de execução de container que permite empacotar seus aplicativos com todas as suas dependências em uma unidade padronizada para desenvolvimento, distribuição e execução de softwares. Atualmente já existe uma versão do Docker Desktop para distribuições linux, mas vamos fazer a instalação através de linha de comando no terminal do Ubuntu e em outro tutorial eu explico como instalar e configurar o DocKer Desktop no Ubuntu.&lt;/p&gt;

&lt;p&gt;Primeiramente você vai precisar fazer a atualização do sistema através do seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Antes de seguimos para a instação do Docker CE, exitem algumas dependências que precisam ser instaladas para configurar os repositórios do Docker e para permitir a instalação real do pacote de instalação do docker. Para instalar essas dependências execute o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install ca-certificates curl gnupg lsb-release -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outra ação importante é verificar se existe uma versão mais antiga do docker instalada no seu sistema operacional. Caso exista, será necessário removê-la executando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt remove docker docker-engine docker.io containerd runc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto, se foi removido ou não uma versão antiga do docker precisamos importar uma chave GPG oficial do repositório Docker. GPG (Gnu Privacy Guard) é uma implementação do OpenPGP (Open Pretty Good Privacy) que é uma técnica de criptografia utilizada como assinatura de código para repositórios de código Linux e repositórios de código-fonte como o GitHub e o GitLab. Para obter a chave GPG é necessário executar o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir -p /etc/apt/keyrings &amp;amp;&amp;amp; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora você já pode configurar o repositório do Docker no seu sistema através do comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E finalmente instalar o Docker Enginer CE, só que não (rs), primeiro é necessário atualizar o indice do pacote apt e então depois fazer a instalação da última versão disponível do Docker Engine, containerd e Docker Compose executando o seguinte comando no seu terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; \
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;containerd&lt;/strong&gt; é um &lt;em&gt;daemon&lt;/em&gt; para Linux e Windows que tem como principal funcionalidade fazer o gerenciamento completo do ciclo de vida do contêiner de seu sistema &lt;em&gt;host&lt;/em&gt;, desde a transferência e armazenamento de imagens até a execução e supervisão do contêiner, até o armazenamento de baixo nível, os anexos de rede e muito mais. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt; é uma ferramenta para definir e executar aplicativos Docker de vários contêineres. Irei explicar isso com mais detalhes e com exemplos em outro artigo. &lt;/p&gt;

&lt;p&gt;E agora para fechar com chave de ouro, vamos verificar se o Docker Engine foi instalado corretamente ¨rodando¨ a imagem &lt;strong&gt;hello-word&lt;/strong&gt;. O comando abaixo vai fazer &lt;em&gt;download&lt;/em&gt; da imagem de teste e executar ela em um contêiner. Quando o contêiner for executado será exebido uma menssage e depois ele será finalizado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker run hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui está o resultado final da execução do contêiner:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvcijyn8dqts06ymdtns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvcijyn8dqts06ymdtns.png" alt="Terminal Linux" width="728" height="581"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referências:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://containerd.io/" rel="noopener noreferrer"&gt;containerd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GOMES, Rafael. docker para Desenvolvedores. Salvador: 9 Bravos, 2007&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fim! :-)&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
