Category Archives: Tecnologia

Governança em TI

Prepare-se! Chegou a hora de você testar o conhecimento adquirido nesta disciplina. A Avaliação Virtual (AV) é composta por questões objetivas e corresponde a 100% da média final. Você tem até cinco tentativas para “Enviar” as questões, que são automaticamente corrigidas. Você pode responder as questões consultando o material de estudos, mas lembre-se de cumprir o prazo estabelecido. Boa prova!
1)

Analise as asserções abaixo, bem como a relação entre elas, e assinale a alternativa correta:
I. O valor agregado fez com que o COBIT se tornasse popular nas gestões como modelo ligado diretamente ao negócio, na geração de valor para as corporações, ou seja, desde 1996, quando o ISACA lançou sua primeira versão, o COBIT está presente nas empresas que almejam outro patamar no mercado.
PORQUE
II. Desde essa época até os dias de hoje, ele interfere diretamente em processos de auditoria, onde o foco é responder às questões de investimento em TI e onde se quer chegar, atendendo às leis e normas dentro de cada segmento. Empresas que já possuem alguma certificação de qualidade, como a ISO, facilmente incorporam o COBIT dentro do processo já organizado e otimizado.
Assinale a alternativa correta:


Alternativas:

Resolução comentada:

Ambas são pertinentes aos domínios do COBIT e se complementam.

Código da questão: 48006

2)

Sobre implantação da ITIL, é correto afirmar que:
I. Assegurar que as regras são utilizadas para a realização eficiente de algumas as Mudanças no ambiente de TI, maximizando o impacto ou risco.
II. Qualquer incidente relacionado à mudança permite melhoras às operações cotidianas da organização.
III. Implementar ITIL necessita avaliação de riscos e continuidade de negócio.
IV. O impacto da mudança, deve manter o equilíbrio entre a necessidade da mudança versus o impacto que esta mudança poderá efetivamente causar.
São verdadeiras:


Alternativas:

Resolução comentada:

Implementar a ITIL necessita de avaliação de riscos e deve manter o equilíbrio entre a mudança contra o impacto da mudança em atendimento ao negócio.

Código da questão: 47999

3)

Sobre a implantação da ITIL, julgue as asserções a seguir:
( ) Manter e gradualmente promover a melhora da qualidade dos serviços de TI e principalmente o alinhamento com as necessidades do negócio.
( ) Ao descrever os papéis e responsabilidades do Service Desk, está se definindo o SLA proposto dentro do orçamento mesmo não sendo planejado.
( ) O nível de serviço ou SLA tem a missão de atender os usuários dentro dos limites orçamentários. Para tanto, identifique quem são os usuários, quais são as necessidades de cada usuário e quais serviços eles necessitam e utilizam.
( ) Descrever um SLA e o Service Desk, é escrever um documento em tabelas, com os perfis e cada um dos serviços ofertados, e o tempo de espera e atendimento em horas para todos os perfis.
( ) Permite que o cliente avalie o serviço em função do custo.
Assinale a alternativa que contenha a sequência correta:


Alternativas:

Resolução comentada:

Todas as afirmações são pertinentes à implantação do ITIL, com exceção da segunda afirmação.

Código da questão: 48000

4)

I. O time (ou team) é composto pela equipe técnica do projeto e é quem realizará as atividades do projeto ou as listas de atividades. Além de serem responsáveis pelas entregas, reportam-se diretamente ao Scrum Master.
PORQUE
II. As atividades que serão desenvolvidas pelo team estão organizadas em listas, que são conhecidas como Product Backlog. Estas listas são alinhadas entre o Product Owner e o Scrum Master ao início do projeto, identificando quais atividades serão feitas ao longo dos ciclos e organizando-as para que sejam cumpridas conforme o necessário.
Assinale a alternativa acerca das assertivas supracitadas, bem como a relação entre elas:


Alternativas:

Resolução comentada:

Ambas garantem a implantação da ITIL com sucesso e se complementam.

Código da questão: 48011

5)

Leia o trecho a seguir e preencha as lacunas:
O ambiente __________ é a base para todos os outros componentes do gerenciamento de riscos considerando o __________. Dentro do corporativo, o ambiente é que propicia disciplina e estrutura, influencia a forma como as estratégias e objetivos devem ser estabelecidos. Os negócios são, portanto, estruturados e os riscos são identificados, avaliados e geridos.
O ambiente influencia inclusive no desenho e na forma como funcionam as atividades de __________ das atividades, inclusive de monitoramento. Influencia, também, inclusive os valores éticos da organização, a competência e o desenvolvimento de pessoal.
Assinale a alternativa com os termos corretos:


Alternativas:

Resolução comentada:

Os termos corretos para as lacunas acima são: Interno – COSO – Controle.

Código da questão: 48013

6)

Estar de acordo com a Governança e implementar um modelo como o ITIL significa muito mais do que atender somente às normas, mas estabelecer processos dentro da empresa na área de infraestrutura.
O principal objetivo do ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬___________________ é minimizar o impacto de _____________e problemas causados por falhas na infraestrutura de TI nos negócios da empresa, além de prevenir a recorrência relacionadas a essas falhas.
Assinale a alternativa que completa adequadamente as lacunas acima:


Alternativas:

Resolução comentada:

A afirmação se completa com as palavras gerenciamento de problemas e na sequência a palavra incidentes. Caracterizando cada uma das gerências da ITIL, gerência de problemas e na sequencia gerência de incidentes.

Código da questão: 47993

7)

Estar de acordo com o Compliance, significa muito mais do que atender somente às normas, mas estar dentro da lei.
O ______________ faz parte da ________________, a fim de regulamentar e fazer cumprir as ___________ definidas e estruturadas dentro de uma instituição.
Assinale a alternativa que completa adequadamente as lacunas acima:


Alternativas:

Resolução comentada:

A resposta completa as lacunas com itens de governança de TI.

Código da questão: 47983

8)

Acerca do assunto estudado nesta aula, analise o trecho a seguir:
É necessário o mapeamento dos riscos intrínsecos aos processos das empresas. Estes riscos mapeados e o entendimento claro do que é um risco dentro do ambiente corporativo é essencial para se iniciar uma implantação.
A afirmação supracitada faz parte de qual conceito?


Alternativas:

Resolução comentada:

O trecho se refere ao que define o COSO propriamente dito.

Código da questão: 48012

9)

Sobre gerência de mudanças no ITIL:
I. Assegurar que métodos e procedimentos são utilizados para a realização eficiente de algumas mudanças no ambiente de TI, minimizando o impacto ou risco.
II. Qualquer incidente relacionado à mudança permite melhoras às operações cotidianas da organização.
III. Implementar uma mudança necessita de avaliação de riscos e continuidade de negócio.
IV. O impacto da mudança, deve manter o equilíbrio entre a necessidade da mudança e a avaliação do impacto causado pela mudança.
São verdadeiras:


Alternativas:

Resolução comentada:

Implementar uma mudança necessita de análise e avaliação de riscos, mantendo-se o equilíbrio entre a mudança contra o impacto desta mudança.

Código da questão: 47994

10)

Sobre Service Level Management (SLA) no ITIL:
( ) Manter e gradualmente promover a melhora da qualidade dos serviços de TI e principalmente o alinhamento com as necessidades do negócio.
( ) Mede, investiga e elimina ações que não estejam com o nível acordado de qualidade.
( ) Equilibra as necessidades dos “clientes” com os custos relativos ao atendimento dessas necessidades.
( ) Medida e comparativo sobre o serviço prestado versus serviço contratado.
( ) Permite que o cliente avalie o serviço em função do custo.
Assinale a alternativa que contenha a sequência correta:


Alternativas:

Resolução comentada:

Todas as afirmações são pertinentes ao SLA, pois para tanto é necessário manter e promover a melhora na qualidade dos serviços de TI, com foco em melhoria contínua. Medir e avaliar ações que não estejam de acordo com o nível de serviço acordado e trabalhar com a qualidade de serviços prestados aos clientes, considerando serviço prestado versus qualidade atendida

Código da questão: 47995


Arquivos e Links

    Sistemas e Segurança

    1)

    São métodos de criptografia de chave simétrica:
    ( ) Blowfish; Data Encryption Standard; Serpent.
    ( ) Idea; DES Triplo; Rivest–Shamir–Adleman.
    ( ) RC4; RC5; Rijndael.
    ( ) Twofish; Rivest–Shamir–Adleman; Blowfish.
    ( ) Blowfish; Data Encryption Standard; X.509.
    Assinale a alternativa que contenha a sequência correta:


    Alternativas:

    • F – F – V – V – V.

    • V – V – F – F – V.

    • V – F – V – F – F.

    • F – V – F – V – F.

    • V – F – V – V – F.

    Resolução comentada:

    O Rivest–Shamir–Adleman é um método de criptografia de chave pública.
    O X.509 é um padrão para certificados digitais.

    Código da questão: 59570

    2)

    Leia e associe as camadas do modelo de referência TCP/IP a suas respectivas características.

    Assinale a alternativa que traz a associação correta entre as duas colunas:


    Alternativas:

    • I-C; II-B; III-A.

    • I-A; II-B; III-C.

    • I-C; II-A; III-B.

    • I-B; II-C; III-A.

    • I-B; II-A; III-C.

    Resolução comentada:

    Protocolos de alto nível como FTP e SMTP são encontrados na camada de aplicação.
    As camadas equivalentes dos modelos OSI da ISO e TCP/IP são transporte OSI e transporte TCP/IP; rede OSI e internet ou inter-rede TCP/IP.
    A camada de interface de rede é a última camada da pilha de camadas do modelo TCP/IP. Por isso, ela lida diretamente com os bits brutos (informação de baixo nível) e suas respectivas tecnologias de transmissão.

    Código da questão: 59555

    3)

    As redes possuem uma arquitetura baseada em ___________, que são organizados em _________. Um protocolo é um _______________________ que se convenciona adotar para a consecução de um objetivo comum entre as partes. Em redes de computadores, os protocolos possuem a missão principal de __________________ de um dispositivo conectado à rede para outros dispositivos também conectados à rede.
    Assinale a alternativa que completa adequadamente as lacunas acima:


    Alternativas:

    • Camadas; Protocolos; Determinado item de software ou hardware; Rotear os pacotes.

    • Protocolos; Camadas; Determinado item de software ou hardware; Rotear os pacotes.

    • Protocolos; Camadas; Conjunto de regras e procedimentos; Viabilizar a comunicação.

    • Protocolos; Camadas; Determinado item de software ou hardware; Viabilizar a comunicação.

    • Camadas; Protocolos; Conjunto de regras e procedimentos; Viabilizar a comunicação.

    Resolução comentada:

    As redes possuem uma arquitetura baseada em protocolos que são organizados em camadas. Um protocolo é um conjunto de regras e procedimentos que se convenciona adotar para a consecução de um objetivo comum entre as partes. Em redes de computadores, os protocolos possuem a missão principal de viabilizar a comunicação (envio de informações/mensagens) de um dispositivo conectado à rede para outros dispositivos também conectados à rede (TANENBAUM, 2011).
    Fonte: TANENBAUM, A. S. Redes de Computadores. 4ª ed. Editora Pearson, São Paulo, 2011. p. 19-20.

    Código da questão: 59543

    4)

    Sobre as tecnologias relacionadas à segurança de redes de computadores, podemos afirmar que:
    I. O principal problema da criptografia de chave privada é como compartilhar essa chave de maneira segura. Dessa forma, surgiu o método de criptografia de chave pública (Public Key Cryptography – PKC), também conhecido como criptografia assimétrica. Nesse método a chave para criptografar a mensagem é a mesma da chave para descriptografar a mesma mensagem.
    II. Uma assinatura eletrônica representa um conjunto de dados, no formato eletrônico, que é anexado ou logicamente associado a um outro conjunto de dados, também no formato eletrônico, para conferir-lhe autenticidade ou autoria. A assinatura eletrônica, portanto, pode ser obtida por meio de diversos dispositivos ou sistemas, como login/senha, biometria, impostação de Personal Identification Number (PIN) etc.
    III. A técnica de resumo criptográfico, também conhecida como hash, assinatura ou marca d’água no arquivo coletado, consiste em uma transformação matemática. Esse método consiste em transformar uma sequência de bits de tamanho aleatório em uma outra sequência de bits de tamanho fixo, de forma que seja muito difícil encontrar duas sequências de bits de tamanho aleatório que produzam a mesma sequência de bits de tamanho fixo.
    IV. Reavaliação é um processo que estende a validade do documento assinado, por meio da reassinatura dos documentos ou da aposição de carimbos do tempo, quando da expiração ou revogação dos certificados utilizados para gerar ou revalidar as assinaturas, ou ainda quando do enfraquecimento dos algoritmos criptográficos ou tamanhos de chave utilizados.
    V. O X.509 é um padrão criado pela International Organization for Standardization para Infraestruturas de chaves públicas que especifica, dentre outras coisas, um formato para certificados digitais.
    São verdadeiras:


    Alternativas:

    • II – III – IV.

    • I – II – IV.

    • II – III – V.

    • I – IV – V.

    • III – IV – V.

    Resolução comentada:

    O principal problema da criptografia de chave privada é como compartilhar essa chave de maneira segura. Dessa forma, surgiu o método de criptografia de chave pública (Public Key Cryptography – PKC), também conhecido como criptografia assimétrica. Nesse método a chave para criptografar a mensagem é diferente da chave para descriptografar a mesma mensagem.
    O X.509 é um padrão criado pelo Telecommunication Standardization Sector of International Telecommunication Union (ITU-T) para Infraestruturas de chaves públicas que especifica, dentre outras coisas, um formato para certificados digitais.

    Código da questão: 59574

    5)

    São componentes do IP Security (IPSec):
    ( ) Protocolo de encapsulamento de dados de segurança (Encapsulating Security Payload – ESP).
    ( ) Generic Routing Protocol (GRE).
    ( ) Versão 6 do protocolo IP (IPv6).
    ( ) Protocolo para compartilhamento de chaves na internet (Internet Key Exchange – IKE).
    ( ) Banco de Dados de políticas de Segurança (Security Policy Database – SPD).
    Assinale a alternativa que contenha a sequência correta:


    Alternativas:

    • V – F – F – V – V.

    • V – V – F – F – F.

    • F – V – V – F – V.

    • V – V – V – V – F.

    • F – V – F – V – F.

    Resolução comentada:

    Generic Routing Protocol (GRE) é uma tecnologia usada para criação de conexões ponto a ponto privadas como a de uma rede privada virtual (Virtual Private Network), por exemplo. O IPSec pode ser usado em conjunto com os terminais de túneis GRE, mas este não é parte do IPSec.
    O IPv6 é a versão 6 do Internet Protocol (IP). O IPSec atua sobre a comunicação de duas máquinas que usam uma rede IP. Entretanto, o IPv6 não é um componente do IPSec.

    Código da questão: 59579

    6)

    Umas das técnicas mais utilizadas na disciplina de segurança de redes de computadores é a criptografia. Tecnicamente falando, a disciplina de criptografia:
    Assinale a alternativa que complete adequadamente a frase acima:


    Alternativas:

    • Consiste em que cada letra ou grupo de letras é substituído por outra letra ou grupo de letras, de modo a criar um disfarce.

    • Trabalha com o conceito de cifra, que nada mais é que o resultado de uma transformação de um bit por outro bit.

    • Consiste na realização de uma série de substituições e permutações em várias “rodadas” ou iterações.

    • Utiliza-se sempre da mesma chave para criptografar e descriptografar a mensagem.

    • Trabalha com chave pública, de livre conhecimento, para criptografar a mensagem, e uma outra chave privada para descriptografar.

    Resolução comentada:

    Cada letra ou grupo de letras é substituído por outra letra ou grupo de letras, de modo a criar um disfarce. Trata-se de uma característica específica das cifras de substituição.
    Trabalha com chave pública, de livre conhecimento, para criptografar a mensagem, e uma outra chave privada para descriptografar. Trata-se de uma característica específica da criptografia de chave pública.
    Utiliza-se sempre da mesma chave para criptografar e descriptografar a mensagem. Trata-se de uma característica específica da criptografia de chave privada.
    Consiste na realização de uma série de substituições e permutações em várias “rodadas” ou iterações. Aqui estamos falando especificamente do método utilizado pelo Advanced Encryption Standard (AES).

    Código da questão: 59566

    7)

    Sobre a redes privadas virtuais (Virtual Private Network – VPN), é correto o que afirma em:


    Alternativas:

    • No IPSec, o cabeçalho de autenticação (Authentication Header – AH) é responsável por assegurar a autenticação, e o Encapsulating Security Payload (ESP) é responsável pelos serviços de compactação de datagramas.

    • Um túnel GRE pode ser configurado para operar apenas em redes metropolitanas (Metropolitan Area Network – MAN).

    • Os terminais de túnel GRE (Generic Routing Protocol) enviam cargas úteis por meio de túneis GRE, roteando pacotes encapsulados por meio de redes IP intervenientes.

    • Os túneis GRE suportam tráfego unicast (a transmissão é destinada a apenas um receptor na rede) e já estão adaptados ao IPv6.

    • Uma VPN SSL (Secure Sockets Layer) criptografa o tráfego de informações de ponta a ponta, mas necessita de instalação de software adicional por parte do usuário final.

    Resolução comentada:

    Uma VPN SSL (Secure Sockets Layer) criptografa o tráfego de informações de ponta a ponta e não necessita de instalação de software adicional por parte do usuário final.
    Os túneis GRE suportam tráfego multicast (a transmissão é destinada a vários receptores na rede) e já estão adaptados ao IPv6.
    Um túnel GRE pode ser configurado para operar apenas em redes de longa distância (Wide Area Network – WAN).
    No IPSec, o cabeçalho de autenticação (Authentication Header – AH) é responsável por assegurar a autenticação, e o IP Payload Compression Protocol (IPComp) é responsável pelos serviços de compactação de carga de IP.

    Código da questão: 59585

    8)

    Sobre as tecnologias usadas para estabelecer conexões seguras, é correto afirmar que:


    Alternativas:

    • O protocolo Kerberos trabalha com criptografia de chave pública e para funcionar ele necessita de três servidores e um cliente.

    • O Pretty Good Privacy (PGP) é uma solução utilizada para assegurar a privacidade das mensagens enviadas por uma rede privada virtual (VPN), que codifica dados usando uma cifra de bloco chamada Idea.

    • De maneira simplificada, um firewall consiste em dois equipamentos roteadores, que são utilizados para filtrar os pacotes que entram e que saem da rede corporativa.

    • Um centro de distribuição de chaves (Key Distribution Center – KDC), dentre outras funcionalidades, criptografa uma mensagem enviada por um usuário com a chave secreta que o usuário compartilha apenas com o KDC.

    • O IPSec possui, dentre outros, um cabeçalho de autenticação (Authentication Header – AH) e um protocolo de encapsulamento de dados de segurança (Internet Key Exchange – IKE).

    Resolução comentada:

    O protocolo Kerberos trabalha com criptografia de chave privada, e para funcionar necessita de três servidores e um cliente.
    O IPSec possui, dentre outros, um cabeçalho de autenticação (Authentication Header – AH) e um protocolo de encapsulamento de dados de segurança (Encapsulating Security Payload – ESP).
    De maneira simplificada, um firewall consiste em dois equipamentos roteadores, que são utilizados para filtrar os pacotes que entram e que saem da rede corporativa, além de um gateway de aplicação.
    O Pretty Good Privacy (PGP) é uma solução utilizada para assegurar a privacidade das mensagens enviadas por e-mail que codifica dados usando uma cifra de bloco chamada Idea.

    Código da questão: 59582

    9)

    Sobre a Infraestrutura de Chaves Públicas Brasileira (ICP-Brasil), é correto afirmar que:


    Alternativas:

    • É composta por uma autoridade gestora de políticas e pela cadeia de autoridades certificadoras composta pela Autoridade Certificadora Raiz (AC Raiz), pelas Autoridades Certificadoras (AC) e pelas Autoridades de Registro (AR).

    • Um dos objetivos pretendidos quando da criação da ICP-Brasil é prover a realização de transações eletrônicas seguras, assegurando a autenticidade, integridade e a validade jurídica de documentos em forma eletrônica.

    • É um sistema oficial brasileiro que utiliza criptografia de chave privada para a emissão de certificados digitais.

    • Os certificados digitais emitidos pelas entidades que fazem parte da IPC-Brasil permitem a seus usuários a geração e verificação de assinaturas digitais, mas que não têm o mesmo valor jurídico de uma assinatura manuscrita.

    • Às AC, entidades credenciadas a emitir certificados digitais vinculando pares de chaves criptográficas ao respectivo titular, compete emitir, expedir, distribuir, revogar e gerenciar os certificados.

    Resolução comentada:

    A ICP-Brasil é um sistema oficial brasileiro que utiliza criptografia de chave pública para a emissão de certificados digitais.
    Os certificados digitais emitidos pelas entidades que fazem parte da IPC-Brasil permitem a seus usuários a geração e verificação de assinaturas digitais que têm o mesmo valor jurídico de uma assinatura manuscrita.
    É composta por uma autoridade gestora de políticas e pela cadeia de autoridades certificadoras composta pela Autoridade Certificadora Raiz (AC Raiz), pelas Autoridades Certificadoras (AC) e pelas Autoridades de Registro (AR).
    Às AC, entidades credenciadas a emitir certificados digitais vinculando pares de chaves criptográficas ao respectivo titular, compete emitir, expedir, distribuir, revogar e gerenciar os certificados, bem como colocar à disposição dos usuários lista de certificados revogados e outras informações pertinentes e manter registro de suas operações.

    Código da questão: 59576

    10)

    Na criptografia de chave simétrica, um texto simples escrito por um emissor, é posteriormente alterado (codificado) por uma _________________, que usa uma _____. O resultado disso é um _____________, que é transmitido por uma rede de computadores. O texto é descriptografado (decodificado) com a mesma chave. O resultado disso é o ______________________, que é lido pelo receptor da mensagem.
    Assinale a alternativa que completa adequadamente as lacunas acima:


    Alternativas:

    • Ferramenta; Chave; Texto cifrado; Texto simples original.

    • Função matemática; Ferramenta; Texto cifrado; Texto compilado.

    • Ferramenta; Chave; Texto compilado; Texto simples original.

    • Função matemática; Chave; Texto cifrado; Texto simples original.

    • Função matemática; Ferramenta; Texto compilado; Texto simples original.

    Resolução comentada:

    Segundo Moura (2019, p. 27):
    Nos processos que envolvem as chaves simétricas, a mesma chave é utilizada tanto pelo emissor quanto por quem recebe a informação, ou seja, é utilizada para codificar e para a decodificação dos dados.
    Segundo Tanenbaum (2011, p. 538):
    O texto simples é criptografado em blocos de 64 bits, produzindo 64 bits de texto cifrado.
    Referências bibliográficas
    MOURA, M, O. A Criptografia Motivando o Estudo das Funções no 9o Ano do Ensino Fundamental. Dissertação apresentada ao Programa de Pós-Graduação em Matemática como requisito parcial à obtenção do grau de Mestre em Matemática. Universidade Federal do Tocantins. Arraias, 2019. p. 27.
    TANENBAUM, A. S. Redes de Computadores. 4ª ed. Editora Pearson, São Paulo, 2011. p. 538.

    Código da questão: 59568

    DBDiagram.io Exemplo

    Exemplo de modelo de dados DBDiagram.io


    //// -- LEVEL 1
    //// -- Tables and References

    // Creating tables
    Table users as U {
    id int [pk, increment] // auto-increment
    full_name varchar
    created_at timestamp
    country_code int
    }

    Table countries {
    code int [pk]
    name varchar
    continent_name varchar
    }

    // Creating references
    // You can also define relaionship separately
    // > many-to-one; < one-to-many; - one-to-one Ref: U.country_code > countries.code
    Ref: merchants.country_code > countries.code

    //----------------------------------------------//

    //// -- LEVEL 2
    //// -- Adding column settings

    Table order_items {
    order_id int [ref: > orders.id] // inline relationship (many-to-one)
    product_id int
    quantity int [default: 1] // default value
    }

    Ref: order_items.product_id > products.id

    Table orders {
    id int [pk] // primary key
    user_id int [not null, unique]
    status varchar
    created_at varchar [note: 'When order created'] // add column note
    }

    //----------------------------------------------//

    //// -- Level 3
    //// -- Enum, Indexes

    // Enum for 'products' table below
    Enum products_status {
    out_of_stock
    in_stock
    running_low [note: 'less than 20'] // add column note
    }

    // Indexes: You can define a single or multi-column index
    Table products {
    id int [pk]
    name varchar
    merchant_id int [not null]
    price int
    status products_status
    created_at datetime [default: `now()`]

    Indexes {
    (merchant_id, status) [name:'product_status']
    id [unique]
    }
    }

    Table merchants {
    id int
    country_code int
    merchant_name varchar

    "created at" varchar
    admin_id int [ref: > U.id]
    Indexes {
    (id, country_code) [pk]
    }
    }

    Table merchant_periods {
    id int [pk]
    merchant_id int
    country_code int
    start_date datetime
    end_date datetime
    }

    Ref: products.merchant_id > merchants.id // many-to-one
    //composite foreign key
    Ref: merchant_periods.(merchant_id, country_code) > merchants.(id, country_code)

    Instalando Tor Browser no Ubuntu

    Passo 1. Se seu sistema for de 64 bits, use o comando abaixo para baixar o programa. Se o link estiver desatualizado, acesse essa página (clique na pasta que contém o nome alpha ou beta), baixe a última versão e salve-o com o nome tor-browser.tar.xz:
    wget https://dist.torproject.org/torbrowser/10.5a16/tor-browser-linux64-10.5a16_pt-BR.tar.xz -O tor-browser.tar.xz

    Passo 2. Execute o comando abaixo para descomprimir o pacote baixado, para a pasta /opt/;
    sudo tar -xvJf tor-browser.tar.xz -C /opt/

    Passo 3. Renomeie a pasta criada;
    sudo mv /opt/tor-browser*/ /opt/tor-browser

    Passo 4. Finalmente, crie um atalho para facilitar a execução do programa;
    sudo ln -sf /opt/tor-browser/Browser/start-tor-browser /usr/bin/torbrowser

    Passo 5. Se seu ambiente gráfico atual suportar, crie um lançador para o programa, executando o comando abaixo;
    echo -e '[Desktop Entry]\n Version=1.0\n Name=torbrowser\n Exec=/opt/tor-browser/Browser/start-tor-browser\n Icon=/opt/tor-browser/Browser/icons/updater.png\n Type=Application\n Categories=Application' | sudo tee /usr/share/applications/torbrowser.desktop

    Exemplo API – Binary vs Base64

    Este post, esclarece as diferenças de uma API que permite integrar arquivos, através de arquivo binário e base 64. Um ponto importante é que utilizando o formato Base 64, o payload aumenta 33% (em média), nas chamadas GET/POST.

    O exemplo utiliza Spring Boot.

    Desenho da Solução

    A solução utiliza REST API, armazenando o arquivo em File System (/uploads/) no local onde a aplicação está rodando.

    Swagger UI

    De forma a facilitar o entendimento a API, o projeto conta com o Swagger UI, através do Spring Fox.

    Para acessar o Swagger UI, basta subir a aplicação e acessar http://localhost:8080/swagger-ui.html.

    Postman

    GET – List Files

    GET – Specif File (obtenção de arquivo binário)

    GET – Specif File 64 (obtenção do arquivo em base64 – em torno de 33% maior que o binário) – Verifique o tamanho em Content-Length (12.764) – O arquivo binário tem 9.572 bytes.

    POST – Post File

    POST – Post File 64

    Código

    O código-fonte pode ser baixado no Github.

    Instalando R no Ubuntu

    Como o R é um projeto em constante atualização, a versão estável mais recente nem sempre está disponível nos repositórios do Ubuntu. Sendo assim, vamos começar adicionando o repositório externo mantido pelo CRAN.

    Nota: o CRAN mantém os repositórios dentro de sua rede, mas nem todos os repositórios externos são confiáveis. Certifique-se de instalar apenas a partir de fontes confiáveis.

    Vamos primeiro adicionar a chave GPG relevante.

    $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
    

     Copy

    Ao executarmos o programa, vamos receber o seguinte resultado:

    OutputExecuting: /tmp/apt-key-gpghome.cul0ddtmN1/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
    gpg: key 51716619E084DAB9: public key "Michael Rutter <marutter@gmail.com>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    

    Assim que tivermos a chave confiável, podemos adicionar o repositório.

    Se você não estiver usando a versão 20.04, será possível encontrar o repositório relevante da lista Ubuntu do projeto R, nomeada para cada versão. O Ubuntu 20.04 é conhecido como Focal Fossa, e a versão mais recente do R é a 4.1.0. Por conta disso, este é o nome convencionado do repositório abaixo — focal-cran40.

    $ sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
    

     Copy

    Dentro do resultado exibido, você deve identificar linhas semelhantes às seguintes:

    Output...
    Get:7 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease [3622 B]                  
    Get:8 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages [15.6 kB]
    ...
    

    Agora, precisaremos executar update (atualizar) após isso para incluir os manifestos de pacotes do novo repositório.

    $ sudo apt update
    

     Copy

    Certifique-se de que uma das linhas do resultado é semelhante à seguinte:

    Output...
    Hit:5 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease
    ...
    

    Se a linha acima aparecer no resultado do comando update, adicionamos o repositório com sucesso. Podemos garantir que não instalaremos acidentalmente uma versão mais antiga.

    Neste ponto, estamos prontos para instalar o R com o seguinte comando.

    $ sudo apt install r-base
    

     Copy

    Se for solicitado a confirmar a instalação, pressione y para continuar.

    No momento em que este tutorial está sendo escrito, a versão estável mais recente do R do CRAN é a 4.1.0, que é exibida quando você inicia o R.

    Como estamos planejando instalar um pacote de exemplo para cada usuário no sistema, iniciaremos o R como root para que as bibliotecas estejam disponíveis para todos os usuários automaticamente. De forma alternativa, se você executar o comando R sem o sudo, uma biblioteca pessoal pode ser configurada para seu usuário.

    $ sudo -i R
    

     Copy

    Output
    R version 4.0.0 (2020-04-24) -- "Arbor Day"
    Copyright (C) 2020 The R Foundation for Statistical Computing
    Platform: x86_64-pc-linux-gnu (64-bit)
    ...
    Type 'demo()' for some demos, 'help()' for on-line help, or
    'help.start()' for an HTML browser interface to help.
    Type 'q()' to quit R.
    
    >
    

    Isso confirma que instalamos o R com sucesso e entramos em seu shell interativo.

    Para verificar a versão instalada, digite o comando

    $ R --version
    

    NLP – Natural Language Processing

    Layers

    1. Input and initial processing—Taking in speech or text and breaking it up into smaller pieces for processing. For speech, this step is called phonetic analysis, and consists of breaking down the speech into individual sounds, called phonemes. For text input, this can include optical character recognition (OCR) and tokenization. OCR is used to recognize the individual characters in text if it’s coming in as an image rather than as words made of characters. Tokenization refers to breaking down a continuous text into individual tokens, often words.
    2. Morphological analysis—Breaking down complex words into their components to better understand their meaning. For example, you can break down “incomprehensible” into its component parts.
      • “in”—not
      • “comprehens”—to understand or comprehend
      • “ible”—indicates that this word is an adjective, describing whether something can be comprehended
    3. Syntactic analysis—Trying to understand the structure of sentences by looking at how the words work together. This step is like diagramming a sentence, where you identify the role each word is playing in the sentence.
    4. Semantic interpretation—Working out the meaning of a sentence by combining the meaning of individual words with their syntactic roles in the sentence.
    5. Discourse processing—Understanding the context around a sentence to fully process what it means.
    1. Speech (phonetic/phonological analysis) or text (OCR/tokenization); 2. Morphological analysis; 3. Syntactic analysis; 4. Semantic interpretation; 5. Discourse processing

    Fonte: https://trailhead.salesforce.com/pt-BR/content/learn/modules/deep-learning-and-natural-language-processing/start-with-nlp

    Como Instalar e Utilizar o Docker no Ubuntu 20.04

    Introduçã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
    

     Copy

    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
    

     Copy

    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 -
    

     Copy

    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"
    

     Copy

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

    sudo apt update
    

     Copy

    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
    

     Copy

    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

     Copy

    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
    

     Copy

    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
    

     Copy

    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}
    

     Copy

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

    su - ${USER}
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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]
    

     Copy

    Para ver todos os subcomandos disponíveis, digite:

    docker
    

     Copy

    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
    

     Copy

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

    docker info
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

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

    apt install nodejs
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

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

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

    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
    

     Copy

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

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

     Copy

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

    docker push sammy/ubuntu-nodejs
    

     Copy

    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.

    Fonte: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-pt