Category Archives: Tecnologia

Instalar Python no Linux compilando o código fonte

Para instalar o Python 3.8 no Linux compilando o código fonte, você deve fazer o seguinte:

Passo 1. Abra um terminal;
Passo 2. Instale os pacotes de compilação e bibliotecas de desenvolvimento da sua distribuição usando a central de programa da mesma (procure pelos nomes ou equivalentes listados nos comandos abaixo) . No caso do Ubuntu, Debian e derivado isso pode ser feito com o seguinte comando;

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

Passo 3. Acesse a pasta opt;

cd /opt

Passo 4. Baixe o código fonte com o comando abaixo;

sudo wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz

Passo 5. Use o comando a seguir para descompactar o arquivo baixado;

sudo tar xzf Python-3.8.7.tgz

Passo 6. Agora, acesse a pasta criada durante a descompactação;

cd Python-3.8.7

Passo 7. Use o comando abaixo para preparar os arquivos para a compilação;

sudo ./configure --enable-optimizations

Passo 8. Em seguida, compile o programa com esse comando (O make altinstall é usado para impedir a substituição do arquivo binário python padrão /usr/bin/python);

sudo make altinstall

Passo 9. Verifique a versão instalada do python usando o seguinte comando;

python3.8 -V

Passo 10. Após a instalação bem-sucedida, remova o arquivo baixado para economizar espaço em disco;

As 8 melhores bibliotecas Python para Machine Learning

O que é machine learning?

O machine learning (ML), ou aprendizado de máquina, é o estudo de algoritmos de computador que melhoram automaticamente com a experiência. É visto como parte da inteligência artificial.

É o campo com maior intensidade de algoritmo na ciência da computação. Já se foi o tempo em que as pessoas tinham que codificar todos os algoritmos paramachine learning. Graças ao Python e suas bibliotecas, módulos e estruturas, agora é mais eficaz e fácil.

Algumas das melhores bibliotecas Python para machine learning em 2021

Bem, Python cresceu e se tornou a linguagem preferida para algoritmos de machine learning. Vamos dar uma olhada nas principais bibliotecas Python usadas para isto.

ML / DL envolve muitos cálculos matemáticos e operações, especialmente Matrix. Para tornar mais fácil e menos demorado, são usadas bibliotecas Python para machine learning.

De acordo com o relatório, NumPy, Pandas e Matplotlib são as bibliotecas Python preferidas para machine learning.

Imagem Ilustrativa

Agora, vamos verificar algumas das melhores bibliotecas Python para machine learning em 2021.

1- Numpy

NumPy ou Numerical Python é álgebra linear desenvolvida em Python. Um grande número de desenvolvedores e especialistas prefere isso a outras bibliotecas Python paramachine learning. Porque quase todos os pacotes de machine learning Python, como scipy, Mat-plotlib, Scikit-learn, etc, dependem fortemente dessa biblioteca em uma extensão razoável.

Além disso, ele vem com funções para lidar com operações matemáticas complexas como transformação de Fourier, álgebra linear, número aleatório e recursos que funcionam com matrizes e n-arrays em Python. Além disso, este pacote python executa cálculos científicos. Portanto, é amplamente utilizado no tratamento de ondas sonoras, imagens e outras funções binárias.

Características:
Objeto de matriz N-dimensional de alto desempenho
Interativo
Recipiente multidimensional para dados genéricos
Intuitivo
Informação adicional

2- TensorFlow

TensorFlow é uma biblioteca de machine learning Python de ponta a ponta para realizar cálculos numéricos de ponta. É uma das bibliotecas Python mais recomendadas para aprendizado de máquina. Ele pode lidar com redes neurais profundas para PNL (Processamento de Linguagem Natural), redes neurais recorrentes, reconhecimento de imagem, incorporação de palavras, classificação de dígitos manuscritos e PDE (Equação Diferencial Parcial). O TensorFlow Python garante excelente suporte de arquitetura para permitir implantações de computação fáceis em uma ampla gama de plataformas, incluindo desktops, servidores e dispositivos móveis.

Um dos principais benefícios do TensorFlow é a abstração para projetos de machine learning e IA. Esse recurso permite que os desenvolvedores se concentrem na lógica abrangente do aplicativo em vez de lidar com os detalhes mundanos da implementação de algoritmos. Além disso, com esta biblioteca, os desenvolvedores de Python agora podem aproveitar IA e ML sem esforço para criar aplicativos responsivos exclusivos, que respondem às entradas do usuário, como expressão facial ou de voz.

Características:
Ele é otimizado para velocidade e faz uso de técnicas como o XLA para operações rápidas de álgebra linear.
Construto Responsivo
Flexível
Facilmente treinável
Treinamento de rede neural paralela
Grande Comunidade
Código aberto

3- Pytorch

Você já pensou por que o PyTorch se tornou uma das bibliotecas Python populares para machine learning em tão pouco tempo?

PyTorch é uma biblioteca de machine learning Python pronta para produção com excelentes exemplos, aplicativos e casos de uso suportados por uma forte comunidade. Esta biblioteca absorve forte aceleração da GPU e permite que você a aplique a partir de aplicativos como o NLP. Como ele suporta computação de GPU e CPU, ele fornece otimização de desempenho e treinamento distribuído escalonável em pesquisa e produção.

Redes neurais profundas e computação de tensor com aceleração de GPU são os dois recursos de ponta do PyTorch. Ele inclui um compilador de machine learning chamado Glow, que aumenta o desempenho de estruturas deste processo.

Características:
Front-end híbrido
Treinamento Distribuído
Python First
Bibliotecas e ferramentas

4- Pandas

Em projetos de machine learning, uma quantidade substancial de tempo é gasta na preparação dos dados, bem como na análise de tendências e padrões básicos. É aqui que o Python Pandas atrai a atenção dos especialistas em machine learning. Python Pandas é uma biblioteca de código aberto que vem com uma ampla gama de ferramentas para manipulação e análise de dados. Com a ajuda dessa biblioteca, você pode ler dados de uma ampla variedade de fontes, como bancos de dados SQL, CSV, arquivos JSON e Excel.

Ele permite que você gerencie operações de dados complexas com apenas um ou dois comandos. Além disso, Python Pandas vem com vários métodos embutidos para combinar dados e agrupar e filtrar a funcionalidade de série temporal. No geral, o Pandas não se limita apenas a lidar com tarefas relacionadas a dados; também serve como o melhor ponto de partida para criar ferramentas de dados mais focadas e poderosas.

Características:
Objeto DataFrame rápido e eficiente com indexação padrão e customizada.
Ferramentas para carregar dados em objetos de dados na memória de diferentes formatos de arquivo.
Alinhamento de dados e tratamento integrado de dados ausentes.
Remodelagem e dinamização de conjuntos de dados.

5- Matplotlib

Como o nome sugere, Matplotlib oferece uma interface semelhante ao MATLAB e fornece aos usuários uma excelente experiência de usuário. Ele usa kits de ferramentas GUI padrão como Qt, wxPython, GTK + ou Tkinter para fornecer aos programadores uma API orientada a objetos para incorporar gráficos e plotagens em seus aplicativos.

Matplotlib ajuda a produzir gráficos e figuras 2D de alta qualidade em vários formatos. Os tipos de gráficos e gráficos incluem gráficos de erros, gráficos, histogramas, gráficos de dispersão e gráficos de barras com o mínimo de linhas de código.

Características:
Renderização de texto mais rápida
Mapa de cores qualitativo
Suporte de imagem aprimorado
Melhor escolha de texto de deslocamento

6- Scipy

SciPy é uma das bibliotecas Python populares para machine learning. Tem sido uma biblioteca favorita entre os entusiastas do machine learning, pois contém diferentes módulos para integração, otimização, álgebra linear e estatística. Há uma diferença entre a biblioteca SciPy e a pilha SciPy. O SciPy é um dos pacotes principais que compõem a pilha do SciPy. Além disso, SciPy também é muito útil para a manipulação de imagens.

Características:
Lida facilmente com operações matemáticas.
Oferece rotinas numéricas eficientes, como integração e otimização numérica, usando submódulos.
Suporta processamento de sinal.

7- Keras

Keras é uma das melhores bibliotecas Python para machine learning. Se você for um iniciante em machine learning, sugiro que use Keras. Além disso, fornece uma maneira mais fácil de expressar redes neurais. Além disso, ele também fornece alguns dos utilitários para compilar modelos, processar conjuntos de dados, avaliar resultados, visualizar gráficos e muito mais.

Keras usa internamente Tensorflow ou Theano como backend. Algumas outras estruturas de rede neural populares como CNTK também podem ser usadas. Keras é lento quando comparado a outras bibliotecas porque constrói um gráfico computacional usando a infraestrutura de back-end e depois o usa para realizar operações. Além disso, Keras fornece muitos conjuntos de dados pré-processados ​​e modelos pré-treinados como Inception, SqueezeNet, Mnist, VGG, ResNet, etc.

Características:
Ele funciona perfeitamente na CPU e GPU.
Conjuntos de dados pré-etiquetados
Vários métodos para pré-processamento de dados
Avaliação de modelo
Modularidade

8- Theano

Em essência, Theano é uma conhecida biblioteca de computação científica que permite definir, otimizar e avaliar expressões matemáticas que lidam com matrizes multidimensionais. O fundamento de vários aplicativos de ML e IA é o cálculo repetitivo de uma expressão matemática complicada.

Theano permite que você faça cálculos com muitos dados mais rápido do que executando somente em sua CPU. Além disso, é bem otimizado para GPUs, o que oferece diferenciação simbólica eficaz e inclui recursos de teste de código extensos.

Quando se trata de desempenho superior, Theano é uma ótima biblioteca de machine learning Python, pois inclui a capacidade de lidar com cálculos em grandes redes neurais. Tem como objetivo aumentar o tempo de desenvolvimento e o tempo de execução de aplicativos de ML, principalmente em algoritmos de aprendizado profundo. Apenas uma desvantagem do Theano na frente do TensorFlow é que sua sintaxe é bastante difícil para iniciantes.

Características:
Integração total com NumPy
Uso transparente de uma GPU
Diferenciação simbólica eficiente
Otimizações de velocidade e estabilidade
Geração de código C dinâmico
Teste de unidade extensivo e autoverificação

Conclusão

O ecossistema python é enorme, tanto em termos de contribuição quanto de uso. Discutimos as bibliotecas Python para machine learning usadas em todas as principais áreas do ML, desde o estágio de manipulação de dados ao aprendizado profundo, processamento de linguagem natural e até mesmo visualização.

Web Sequence Diagrams

Web Sequence Diagrams é um site para geração de diagramas de sequência, a partir de anotações.

Site: https://www.websequencediagrams.com/

Veja um exemplo de anotação:

title [POST] seguranca/v1/serpro

SerproEntryPoint->SerproUseCase: processSerpro(core)
alt Fluxo Gateway
SerproUseCase->GatewayTokenWebClient: getToken()
GatewayTokenWebClient->SerproUseCase: String token
SerproUseCase->SerproGatewayWebClient: getBureauResponse()
SerproGatewayWebClient->SerproUseCase: BureauResponse
else Fluxo Direto
SerproUseCase->SerproWebClient: getBureauResponse()
SerproWebClient->SerproUseCase: BureauResponse
end
SerproUseCase->SerproEntryPoint: BureauResponse

Resultado:

Ubuntu – Java, Docker, Maven e Gradle

Este post demonstrará a instalação mais fácil de fazer.

Java

Para testar se o Java está instalado, digite:

$ java -version

Se o retorno do comando for:

Command 'java' not found, but can be installed with:

sudo apt install default-jre              # version 2:1.11-72, or
sudo apt install openjdk-11-jre-headless  # version 11.0.7+10-3ubuntu1
sudo apt install openjdk-13-jre-headless  # version 13.0.3+3-1ubuntu2
sudo apt install openjdk-14-jre-headless  # version 14.0.1+7-1ubuntu1
sudo apt install openjdk-8-jre-headless   # version 8u252-b09-1ubuntu1

Instale o Java, facilmente com:

$ sudo apt install default-jdk

Ou:

$ sudo apt install openjdk-11-jdk-headless

Verificar a instalação:

$ java -version

Maven

Para verificar se está instalado, digite:

$ mvn -version

Se o comando falhar, digite:

$ sudo apt install maven

Gradle

Execute o comando para verificar a instalação:

$ gradle -version

Se o comando falhar, digite:

$ sudo apt install gradle

Docker

Verificar versão do Docker

$ docker --version

Remover versão instalada

$ sudo apt-get remove docker docker-engine docker.io containerd runc

Instalando Docker

$ sudo apt install docker.io

Docker-Compose

Para instalar, digite os comandos:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Definir permissões para execução:

$ sudo chmod +x /usr/local/bin/docker-compose

Testando a instalação:

$ docker-compose --version

PostgreSQL, PgAdmin e Docker

Neste post, vamos configurar o docker-compose, para disponibilizar o PostgreSQL com PgAdmin, de maneira fácil e rápida.

Premissa: Espera-se que tenha instalado o Docker e Docker-Compose.

docker-compose.yml


version: '3'

services:
  teste-postgres-compose:
    image: postgres
    environment:
      POSTGRES_PASSWORD: "Postgres2021!"
    ports:
      - "15432:5432"
    volumes:
      - /home/fernando/data/postgres:/var/lib/postgresql/data 
    networks:
      - postgres-compose-network
      
  teste-pgadmin-compose:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "lfchaim@gmail.com"
      PGADMIN_DEFAULT_PASSWORD: "PgAdmin2021!"
    ports:
      - "16543:80"
    depends_on:
      - teste-postgres-compose
    networks:
      - postgres-compose-network

networks: 
  postgres-compose-network:
    driver: bridge

Subindo os conteiners

$ sudo docker-compose up -d

Ao final do processo, deve aparecer o log final

Status: Downloaded newer image for dpage/pgadmin4:latest
Creating postgres_teste-postgres-compose_1 ... done
Creating postgres_teste-pgadmin-compose_1  ... done

Pode-se verificar os conteiners rodando, com o comando

$ sudo docker ps

Deverá aparecer

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                            NAMES
1fffaaa4887c        dpage/pgadmin4      "/entrypoint.sh"         About a minute ago   Up About a minute   443/tcp, 0.0.0.0:16543->80/tcp   postgres_teste-pgadmin-compose_1
63e1934f7cdb        postgres            "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:15432->5432/tcp          postgres_teste-postgres-compose_1

Agora, vamos acessar o PgAdmin

Abra um navegador e digite: http://localhost:16543

Forneça o usuário e senha informados no docker-compose

Exemplo: lfchaim@gmail.com / PgAdmin2021!

Na tela do PgAdmin, clique em “Add New Server”

Dê um nome: teste-postgres-compose

Repita o nome em Host: teste-postgres-compose

Usuário: postgres

Senha: Postgres2021! (mesma do docker-compose)

Clicar em “Save”

Pronto! Seu ambiente está criado!

Docker no Ubuntu 20-04

Introdução

O Docker é um aplicativo que simplifica o processo de gerenciamento de processos de aplicação em containers. Os containers deixam você executar suas aplicações em processos isolados de recurso. Eles são semelhantes a máquinas virtuais, mas os containers são mais portáveis, mais fáceis de usar e mais dependentes do sistema operacional do host.

Para uma introdução detalhada aos diferentes componentes de um container Docker, verifique O Ecossistema Docker: Uma Introdução aos Componentes Comuns.

Neste tutorial, você irá instalar e usar a Edição Community (CE) do Docker no Ubuntu 20.04. Você instalará o Docker propriamente dito, trabalhará com contêineres e imagens, e enviará uma imagem para um repositório do Docker.

Pré-requisitos

Para seguir este tutorial, você precisará do seguinte:

Passo 1 — Instalando o Docker

O pacote de instalação do Docker disponível no repositório oficial do Ubuntu pode não ser a versão mais recente. Para garantir que tenhamos a versão mais recente, iremos instalar o Docker do repositório oficial do Docker. Para fazer isso, adicionaremos uma nova fonte de pacote, adicionaremos a chave GPG do Docker para garantir que os downloads sejam válidos, e então instalaremos o pacote.

Primeiro, atualize sua lista existente de pacotes:

sudo apt update

Em seguida, instale alguns pacotes pré-requisito que deixam o apt usar pacotes pelo HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Então, adicione a chave GPG para o repositório oficial do Docker no seu sistema:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Adicione o repositório do Docker às fontes do APT:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Em seguida, atualize o banco de dados do pacote com os pacotes do Docker do recém adicionado repositório:

sudo apt update

Certifique-se de que você está prestes a instalar do repositório do Docker ao invés do repositório padrão do Ubuntu:

apt-cache policy docker-ce

Você verá um resultado assim, embora o número da versão para o Docker possa ser diferente: Output of apt-cache policy docker-ce

docker-ce:
  Installed: (none)
  Candidate: 5:19.03.9~3-0~ubuntu-focal
  Version table:
     5:19.03.9~3-0~ubuntu-focal 500
        500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

Observe que o docker-ce não está instalado, mas o candidato para a instalação é do repositório do Docker para o Ubuntu 20.04 (focal).

Finalmente, instale o Docker:

sudo apt install docker-ce

O Docker deve agora ser instalado, o daemon iniciado e o processo habilitado a iniciar no boot. Verifique se ele está funcionando:

sudo systemctl status docker

O resultado deve ser similar ao mostrado a seguir, mostrando que o serviço está ativo e funcionando:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 24321 (dockerd)
      Tasks: 8
     Memory: 46.4M
     CGroup: /system.slice/docker.service
             └─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Instalando o Docker agora não dá apenas o serviço do Docker (daemon), mas também o utilitário de linha de comando docker, ou o cliente do Docker. Vamos explorar como usar o comando docker mais tarde neste tutorial.

Passo 2 — Executando o Comando Docker Sem Sudo (Opcional)

Por padrão, o comando docker só pode ser executado pelo usuário root ou por um usuário no grupo docker, que é criado automaticamente no processo de instalação do Docker. Se você tentar executar o comando docker sem prefixar ele com o sudo ou sem estar no grupo docker, você terá um resultado como este:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Se você quiser evitar digitar sudo sempre que você executar o comando docker, adicione seu nome de usuário no grupo docker:

sudo usermod -aG docker ${USER}

Para inscrever o novo membro ao grupo, saia do servidor e logue novamente, ou digite o seguinte:

su - ${USER}

Você será solicitado a digitar a senha do seu usuário para continuar.

Confirme que seu usuário agora está adicionado ao grupo docker digitando:

id -nG
Outputsammy sudo docker

Se você precisar adicionar um usuário ao grupo docker com o qual você não está logado, declare esse nome de usuário explicitamente usando:

sudo usermod -aG docker username

O resto deste artigo supõe que você esteja executando o comando docker como um usuário no grupo docker. Se você escolher não fazer isso, por favor preencha os comandos com sudo.

Vamos explorar o comando docker a seguir.

Passo 3 — Usando o Comando Docker

Usar o docker consiste em passar a ele uma cadeia de opções e comandos seguidos de argumentos. A sintaxe toma esta forma:

docker [option] [command] [arguments]

Para ver todos os subcomandos disponíveis, digite:

docker

No Docker 19, a lista completa de subcomandos disponíveis inclui:

Output  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Para visualizar as opções disponíveis para um comando específico, digite:

docker docker-subcommand --help

Para visualizar informações de sistema sobre o Docker, use:

docker info

Vamos explorar alguns desses comandos. Começaremos trabalhando com imagens.

Passo 4 — Trabalhando com Imagens do Docker

Os containers do Docker são construídos com imagens do Docker. Por padrão, o Docker puxa essas imagens do Docker Hub, um registro Docker gerido pelo Docker, a empresa por trás do projeto Docker. Qualquer um pode hospedar suas imagens do Docker no Docker Hub, então a maioria dos aplicativos e distribuições do Linux que você precisará terá imagens hospedadas lá.

Para verificar se você pode acessar e baixar imagens do Docker Hub, digite:

docker run hello-world

O resultado irá indicar que o Docker está funcionando corretamente:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...

O Docker inicialmente não conseguiu encontrar a imagem hello-world localmente, então ele baixou a imagem do Docker Hub, que é o repositório padrão. Uma vez baixada a imagem, o Docker criou um container da imagem e executou o aplicativo no container, mostrando a mensagem.

Você pode procurar imagens disponíveis no Docker Hub usando o comando docker com o subcomando search. Por exemplo, para procurar a imagem do Ubuntu, digite:

docker search ubuntu

O script irá vasculhar o Docker Hub e devolverá uma lista de todas as imagens cujo nome correspondam ao string de pesquisa. Neste caso, o resultado será similar a este:

OutputNAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   10908               [OK]
dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface …   428                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   244                                     [OK]
consol/ubuntu-xfce-vnc                                    Ubuntu container with "headless" VNC session…   218                                     [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   108                 [OK]
ansible/ubuntu14.04-ansible                               Ubuntu 14.04 LTS with
...

Na coluna OFICIAL, o OK indica uma imagem construída e suportada pela empresa por trás do projeto. Uma vez que você tenha identificado a imagem que você gostaria de usar, você pode baixá-la para seu computador usando o subcomando pull.

Execute o comando a seguir para baixar a imagem oficial ubuntu no seu computador:

docker pull ubuntu

Você verá o seguinte resultado:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
d51af753c3d3: Pull complete
fc878cd0a91c: Pull complete
6154df8ff988: Pull complete
fee5db0ff82f: Pull complete
Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Após o download de uma imagem, você pode então executar um container usando a imagem baixada com o subcomando run. Como você viu com o exemplo hello-world, caso uma imagem não tenha sido baixada quando o docker for executado com o subcomando run, o cliente do Docker irá primeiro baixar a imagem e então executar um container usando ele.

Para ver as imagens que foram baixadas no seu computador, digite:

docker images

O resultado se parecerá com o seguinte:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

Como você verá mais tarde neste tutorial, imagens que você usa para executar containers podem ser modificadas e usadas para gerar novas imagens, que podem então ser enviadas (pushed é o termo técnico) para o Docker Hub ou outros registros do Docker.

Vamos ver como executar containers mais detalhadamente.

Passo 5 — Executando um Container do Docker

O container hello-world que você executou no passo anterior é um exemplo de um container que executa e finaliza após emitir uma mensagem de teste. Os containers podem ser muito mais úteis do que isso, e eles podem ser interativos. Afinal, eles são semelhantes a máquinas virtuais, apenas mais fáceis de usar.

Como um exemplo, vamos executar um container usando a última imagem do Ubuntu. A combinação dos switches -i e -t dá a você um acesso de shell interativo no container:

docker run -it ubuntu

Seu prompt de comando deve mudar para refletir o fato de você agora estar trabalhando dentro do container e deve assumir esta forma:

Outputroot@d9b100f2f636:/#

Observe o id do container no prompt de comando. Neste exemplo, é d9b100f2f636. Você precisará do ID do container mais tarde para identificar o container quando você quiser removê-lo.

Agora você pode executar qualquer comando dentro do container. Por exemplo, vamos atualizar o banco de dados do pacote dentro do container. Você não precisa prefixar nenhum comando com sudo, porque você está operando dentro do container como o usuário root:

apt update

Então, instale qualquer aplicativo nele. Vamos instalar o Node.js:

apt install nodejs

Isso instala o Node.js no container do repositório oficial do Ubuntu. Quando a instalação terminar, verifique se o Node.js está instalado:

node -v

Você verá o número da versão exibido no seu terminal:

Outputv10.19.0

Qualquer alteração que você faça dentro do container apenas se aplica a esse container.

Para sair do container, digite exit no prompt.

Vamos ver como gerenciar os containers no nosso sistema a seguir.

Passo 6 — Gerenciando os Containers do Docker

Após usar o Docker por um tempo, você terá muitos containers ativos (executando) e inativos no seu computador. Para visualizar os ativos, use:

docker ps

Você verá um resultado similar ao seguinte:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             

Neste tutorial, você iniciou dois containers; um da imagem hello-world e outro da imagem ubuntu. Ambos os containers já não estão funcionando, mas eles ainda existem no seu sistema.

Para ver todos os containers — ativos e inativos, execute docker ps com o switch -a:

docker ps -a

Você verá um resultado similar a este:

1c08a7a0d0e4        ubuntu              "/bin/bash"         2 minutes ago       Exited (0) 8 seconds ago                       quizzical_mcnulty
a707221a5f6c        hello-world         "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       youthful_curie

Para ver o último container que você criou, passe o switch -l:

docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1c08a7a0d0e4        ubuntu              "/bin/bash"         2 minutes ago       Exited (0) 40 seconds ago                       quizzical_mcnulty

Para iniciar um container parado, use o docker start, seguido do ID do container ou nome do container. Vamos iniciar o contêiner baseado no Ubuntu com o ID do 1c08a7a0d0e4:

docker start 1c08a7a0d0e4

O container irá iniciar e você pode usar o docker ps para ver seu status:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1c08a7a0d0e4        ubuntu              "/bin/bash"         3 minutes ago       Up 5 seconds                            quizzical_mcnulty

Para parar um container em execução, use o docker stop, seguido do ID ou nome do container. Desta vez, usaremos o nome que o Docker atribuiu ao contêiner, que é quizzical_mcnulty:

docker stop quizzical_mcnulty

Uma vez que você tenha decidido que você já não precisa mais de um container, remova ele com o comando docker rm, novamente usando o ID do container ou o nome. Use o comando docker ps -a para encontrar o ID ou nome do container associado à imagem hello-world e remova-o.

docker rm youthful_curie

Você pode iniciar um novo container e dar a ele um nome usando o switch --name. Você também pode usar o switch --rm para criar um container que remove a si mesmo quando ele é parado. Veja o comando docker run help para obter mais informações sobre essas e outras opções.

Os containers podem ser transformados em imagens que você pode usar para criar novos containers. Vamos ver como isso funciona.

Passo 7 —Enviando Alterações em um Container para uma Imagem do Docker

Quando você iniciar uma imagem do Docker, você pode criar, modificar e deletar arquivos assim como você pode com uma máquina virtual. As alterações que você faz apenas se aplicarão a esse container. Você pode iniciá-lo e pará-lo, mas uma vez que você o destruir com o comando docker rm, as alterações serão perdidas para sempre.

Esta seção mostra como salvar o estado de um container como uma nova imagem do Docker.

Após instalar o Node.js dentro do container do Ubuntu, você agora tem um container executando uma imagem, mas o container é diferente da imagem que você usou para criá-lo. Mas você pode querer reutilizar este container Node.js como a base para novas imagens mais tarde.

Então, envie as alterações a uma nova instância de imagem do Docker usando o comando a seguir.

docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

O switch -m é para a mensagem de envio que ajuda você e outros a saber quais as alterações que você fez, enquanto -a é usado para especificar o autor. O container_id é aquele que você anotou anteriormente no tutorial quando você iniciou a sessão interativa do Docker. A menos que você tenha criado repositórios adicionais no Docker Hub, repository é normalmente seu nome de usuário do Docker Hub.

Por exemplo, para o usuário sammy, com o ID do container d9b100f2f636, o comando seria:

docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Quando você envia uma imagem, a nova imagem é salva localmente no seu computador. Mais tarde neste tutorial, você aprenderá como empurrar uma imagem para um registro do Docker para que outros possam acessá-la.

Listando as imagens do Docker novamente irá mostrar a nova imagem, além da antiga da qual ela foi derivada:

docker images

Você verá um resultado como esse:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
...

Neste exemplo, o ubuntu-nodejs é a nova imagem, que foi derivada da imagem ubuntu existente do Docker Hub. A diferença de tamanho reflete as alterações que foram feitas. E neste exemplo, a mudança foi que o NodeJS foi instalado. Então, da próxima vez que você precisar executar um container usando o Ubuntu com o NodeJS pré-instalado, você pode apenas usar a nova imagem.

Você também pode construir Imagens de um Dockerfile, que permite a você automatizar a instalação de software em uma nova imagem. No entanto, isso está fora do âmbito deste tutorial.

Agora vamos compartilhar a nova imagem com outros para que eles possam criar containers a partir dela.

Passo 8 — Empurrando Imagens do Docker para um Repositório do Docker

O próximo passo lógico após criar uma nova imagem de uma imagem existente é compartilhá-la com alguns de seus amigos, todo o mundo no Docker Hub, ou outro registro do Docker que você tenha acesso. Para empurrar uma imagem para o Docker Hub ou qualquer outro registro do Docker, você deve ter uma conta lá.

Esta seção mostra como empurrar uma imagem do Docker para o Docker Hub. Para aprender a criar seu próprio registro privado do Docker, verifique Como Configurar um Registro Privado do Docker no Ubuntu 14.04.

Para empurrar sua imagem, primeiro logue no Docker Hub.

docker login -u docker-registry-username

Você será solicitado a autenticar-se usando sua senha do Docker Hub. Se você especificou a senha correta, a autenticação deve ser bem sucedida.

Nota: se seu nome de usuário de registro do Docker for diferente do nome de usuário local que você usou para criar a imagem, você terá que anexar sua imagem com seu nome de usuário de registro. Para o exemplo dado no último passo, você digitaria:

docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Então você pode empurrar sua própria imagem usando:

docker push docker-registry-username/docker-image-name

Para empurrar a imagem ubuntu-nodejs no repositório sammy, o comando seria:

docker push sammy/ubuntu-nodejs

O processo pode levar algum tempo para se completar uma vez que ele envia as imagens, mas quando finalizado, o resultado se parecerá com este:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...


Após empurrar uma imagem para um registro, ela deve estar listada no painel da sua conta, como mostrado na imagem abaixo.

New Docker image listing on Docker Hub

Se uma tentativa de empurrar resultar em um erro deste tipo, então você provavelmente não logou:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Logue com docker login e repita a tentativa de empurrar. Então verifique se ela existe na sua página de repositório do Docker Hub.

Você agora pode usar o docker pull sammy/ubuntu-nodejs para puxar a imagem para uma nova máquina e usá-la para executar um novo contêiner.

Resolvendo problema de ç (cedilha) no Ubuntu

Depois de instalar o Ubuntu ás vezes você se depara com o problema de ao digitar uma palavra com cedilha (ç) ela aparece com o acento em cima do c (ć)?!

Segue o procedimento para corrigir esse problema!

Edite o arquivo /etc/environment

A maneira mais fácil para editar este arquivo é abrir um terminal e digitar:
sudo gedit /etc/environment

O comando acima vai pedir a senha do seu usuário e depois de digitá-la (enquanto você digita o terminal não irá mostrar nada) é só apertar a tecla ENTER que o editor gedit vai abrir.

Adicionar linha no final do arquivo

Adicione a seguinte linha no final do arquivo:
GTK_IM_MODULE=cedilla

Salve o arquivo

Clique no botão ” Salvar” localizado no canto direito superior da tela, ou use a tecla de atalho CTRL+S.

Reinicie o computador

Necessário para garantir que a configuração será utilizada.

Pronto, agora você pode escrever o ç corretamente!

Spring Boot Kubernetes

Spring Boot Kubernetes

This guide walks you through the process of deploying a Spring Boot application on Kubernetes. There are many choices of how to do things with Spring Boot and Kubernetes — the intention with this guide is to get you up and running as quickly as possible, not to discuss all the alternatives or go into all the details of how you get to production (which is, of course, our favourite place to be).

There are some interactive tutorials that complement and extend the content of this guide on Katacoda/springguides. If you follow those tutorials, all the code will be running in the cloud from your browser. Or you can create your own cluster and install all the tools you need locally, then copy paste from the guides.Getting Started with Spring Boot on Kubernetes: the same material as this guide, but running in your browser.Install Kubernetes: a guide to installing Kubernetes locally using Kind. You can use this to get setup on your laptop if you prefer to run the tutorials there.Kubernetes Probes with Spring Boot: a guide to liveness and readiness probes with Spring Boot.

What you’ll build

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. In this guide we will build and deploy a simple Spring boot application.

There is also a Getting Started Guide and a Topical Guide on Docker, which cover some of the background on building a container image.

What you’ll need

You will need a Linux or Linux-like command line. Command line examples in this guide work on Linux, a MacOS terminal with a shell, or WSL on Windows.

You will also need a Kubernetes cluster and the command line tool Kubectl. You can create a cluster locally using Kind (on Docker) or Minikube. Or you can use a cloud provider, such as Google Cloud PlatformAmazon Web Services or Microsoft Azure. Before proceeding further, verify you can run kubectl commands from the shell. E.g. (using kind):

$ kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:46253
KubeDNS is running at https://127.0.0.1:46253/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

and

$ kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   7m13s

Create a Spring Boot Application

The first thing we will do is create a Spring Boot application. If you have one you prefer to use already in github, you could clone it in the terminal (git and java are installed already). Or you can create an application from scratch using start.spring.io:

curl https://start.spring.io/starter.tgz -d dependencies=webflux,actuator | tar -xzvf -

You can then build the application:

./mvnw install
It will take a couple of minutes the first time, but then once the dependencies are all cached it will be fast.

And you can see the result of the build. If the build was successful, you should see a JAR file, something like this:

ls -l target/*.jar
-rw-r--r-- 1 root root 19463334 Nov 15 11:54 target/demo-0.0.1-SNAPSHOT.jar

The JAR is executable:

$ java -jar target/*.jar

The app has some built in HTTP endpoints by virtue of the “actuator” dependency we added when we downloaded the project. So you will see something like this in the logs on startup:

...
2019-11-15 12:12:35.333  INFO 13912 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2019-11-15 12:12:36.448  INFO 13912 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080
...

So you can curl the endpoints in another terminal:

$ curl localhost:8080/actuator | jq .
{
  "_links": {
    "self": {
      "href": "http://localhost:8080/actuator",
      "templated": false
    },
    "health-path": {
      "href": "http://localhost:8080/actuator/health/{*path}",
      "templated": true
    },
    "health": {
      "href": "http://localhost:8080/actuator/health",
      "templated": false
    },
    "info": {
      "href": "http://localhost:8080/actuator/info",
      "templated": false
    }
  }
}

To complete this step, send Ctrl+C to kill the application.

Containerize the Application

There are multiple options for containerizing a Spring Boot application. For local development and testing it makes sense to start with a Dockerfile as the docker build workflow is generally well known and understood.

If you don’t have docker locally or want to automatically push an image to a registry then Jib would be a good choice. In an enterprise setting, when you need a trusted build service for a CI/CD pipeline, you could look at Cloud Native Buildpacks.

First create a Dockerfile:

FROM openjdk:8-jdk-alpine AS builder
WORKDIR target/dependency
ARG APPJAR=target/*.jar
COPY ${APPJAR} app.jar
RUN jar -xf ./app.jar

FROM openjdk:8-jre-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY --from=builder ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=builder ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=builder ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.demo.DemoApplication"]

Then build the container image, giving it a tag (choose your own ID instead of “springguides” if you are going to push to Dockerhub):

$ docker build -t springguides/demo .

You can run the container locally:

$ docker run -p 8080:8080 springguides/demo

and check that it works in another terminal:

$ curl localhost:8080/actuator/health

Finish off by killing the container.

You won’t be able to push the image unless you authenticate with Dockerhub (docker login), but there’s an image there already that should work. If you were authenticated you could:

$ docker push springguides/demo

In real life the image needs to be pushed to Dockerhub (or some other accessible repository) because Kubernetes pulls the image from inside its Kubelets (nodes), which are not in general connected to the local docker daemon. For the purposes of this scenario you can omit the push and just use the image that is already there.

Just for testing, there are workarounds that make docker push work with an insecure local registry, for instance, but that is out of scope for this scenario.

Deploy the Application to Kubernetes

You have a container that runs and exposes port 8080, so all you need to make Kubernetes run it is some YAML. To avoid having to look at or edit YAML, for now, you can ask kubectl to generate it for you. The only thing that might vary here is the --image name. If you deployed your container to your own repository, use its tag instead of this one:

$ kubectl create deployment demo --image=springguides/demo --dry-run -o=yaml > deployment.yaml
$ echo --- >> deployment.yaml
$ kubectl create service clusterip demo --tcp=8080:8080 --dry-run -o=yaml >> deployment.yaml

You can take the YAML generated above and edit it if you like, or you can just apply it:

$ kubectl apply -f deployment.yaml
deployment.apps/demo created
service/demo created

Check that the application is running:

$ kubectl get all
NAME                             READY     STATUS      RESTARTS   AGE
pod/demo-658b7f4997-qfw9l        1/1       Running     0          146m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/kubernetes   ClusterIP   10.43.0.1       <none>        443/TCP    2d18h
service/demo         ClusterIP   10.43.138.213   <none>        8080/TCP   21h

NAME                   READY     UP-TO-DATE   AVAILABLE   AGE
deployment.apps/demo   1/1       1            1           21h

NAME                              DESIRED   CURRENT   READY     AGE
replicaset.apps/demo-658b7f4997   1         1         1         21h
d
Keep doing kubectl get all until the demo pod shows its status as “Running”.

Now you need to be able to connect to the application, which you have exposed as a Service in Kubernetes. One way to do that, which works great at development time, is to create an SSH tunnel:

$ kubectl port-forward svc/demo 8080:8080

then you can verify that the app is running in another terminal:

$ curl localhost:8080/actuator/health
{"status":"UP"}

Source: https://spring.io/guides/gs/spring-boot-kubernetes/