One place for hosting & domains

      Instalar

      Como Instalar o Go no Ubuntu 18.04


      Introdução

      Go é uma linguagem de programação moderna desenvolvida no Google. Ela é cada vez mais popular para muitas aplicações e em muitas empresas, e oferece um conjunto robusto de bibliotecas. Este tutorial irá ajudá-lo a baixar e instalar a versão mais recente do Go (Go 1.10 no momento da publicação deste artigo), bem como construir uma aplicação Hello Word simples.

      Pré-requisitos

      Este tutorial assume que você tenha acesso a um sistema Ubuntu 18.04, configurado com um usuário não-root com privilégios sudo, como descrito em Configuração Inicial de servidor com Ubuntu 18.04.

      Passo 1 — Instalando o Go

      Nesta etapa, vamos instalar o Go no seu servidor.

      Para começar, conecte-se ao seu servidor Ubuntu via ssh:

      • ssh sammy@ip_do_seu_servidor

      Para instalar o Go, você precisará pegar a versão mais recente da página oficial de downloads do Go. No site você pode encontrar a URL para o tarball do binário da versão atual, juntamente com seu hash SHA256.

      Visite a página oficial de downloads do Go e encontre a URL para o taball do binário da versão atual, juntamente com seu hash SHA256. Certifique-se de estar em seu diretório home, e utilize curl para baixar o tarball:

      • cd ~
      • curl -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

      Em seguida, você pode usar o sha256sum para verificar o tarball:

      • sha256sum go1.10.3.linux-amd64.tar.gz

      Sample Output

      go1.10.3.linux-amd64.tar.gz fa1b0e45d3b647c252f51f5e1204aba049cde4af177ef9f2181f43004f901035 go1.10.3.linux-amd64.tar.gz

      Você terá um hash como aquele destacado na saída acima. Certifique-se de que coincide com o da página de downloads.

      A seguir, use o tar para extrair o tarball. A flag x diz ao tar para extrair, v diz a ele que queremos uma saída detalhada (uma listagem dos arquivos que estão sendo extraídos), e f diz a ele que especificaremos um arquivo.

      • tar xvf go1.10.3.linux-amd64.tar.gz

      Agora você deve ter um diretório chamado go em seu diretório home. Altere recursivamente o proprietário e o grupo do diretório go para root, e mova-o para /usr/local:

      • sudo chown -R root:root ./go
      • sudo mv go /usr/local

      Nota: Embora /usr/local/go seja a localização recomendada oficialmente, alguns usuários podem preferir ou requerer paths diferentes.

      Passo 2 — Definindo Paths do Go

      Nesta etapa, iremos definir alguns paths ou caminhos de arquivos em seu ambiente.

      Primeiro, defina o valor da raiz do Go, que diz ao Go onde procurar pelos seus arquivos.

      No final do arquivo, adicione esta linha:

      export GOPATH=$HOME/work
      export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
      

      Se você escolheu um local de instalação alternativo para o Go, em vez disso, adicione essas linhas ao mesmo arquivo. Este exemplo mostra os comandos se o Go estiver instalado no seu diretório home:

      export GOROOT=$HOME/go
      export GOPATH=$HOME/work
      export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
      

      Depois de colar a linha apropriada no seu perfil, salve e feche o arquivo. Em seguida, atualize seu perfil executando:

      Passo 3 — Testando Sua Instalação

      Agora que o Go está instalado e os paths estão defnidos para seu servidor, você pode testar para garantir que o Go esteja funcionando como esperado.

      Crie um novo diretório para o seu espaço de trabalho no Go, que é onde o Go irá compilar seus arquivos:

      Em seguida, crie uma hierarquia de diretórios nessa pasta por meio desse comando para criar seu arquivo de teste. Você pode substituir o valor usuário pelo seu nome de usuário do GitHub se você planeja usar o Git para fazer commit e armazenar seu código Go no GitHub. Se você não planeja usar o GitHub para armazenar e gerenciar seu código, sua estrutura de pastas pode ser algo diferente, como ~/my_project.

      • mkdir -p work/src/github.com/usuário/hello

      Após isso, você pode criar um arquivo simples de "Hello World".

      • nano ~/work/src/github.com/usuário/hello/hello.go

      Dentro do seu editor, cole o código abaixo, que utiliza o pacote main do Go, importa o componente de conteúdo de IO formatado, e define uma nova função para imprimir "Hello, World" ao ser executado.

      package main
      
      import "fmt"
      
      func main() {
          fmt.Printf("hello, worldn")
      }
      

      Este pograma imprimirá "hello, world" se ele for executado com sucesso, o que indicará que os programas do Go estão compilando corretamente. Salve e feche o arquivo, e então compile-o invocando o comando install:

      go install github.com/usuário/hello
      

      Com o arquivo compilado, você pode executá-lo simplesmente executando o comando:

      Se esse comando retornar "hello, world", então o Go está instalado e funcionando com sucesso. Você pode ver onde o binário 'hello' compilado está instalado usando o comando which:

      Output

      /home/usuário/work/bin/hello

      Conclusão

      Ao fazer o download e instalar o pacote Go mais recente e configurar seus paths, agora você tem um sistema pronto para usar no desenvolvimento com Go. Você pode encontrar e se inscrever em artigos adicionais sobre como instalar e usar o Go na nossa tag "Go"

      Por Brennen Bearnes



      Source link

      Como Instalar e Configurar o pgAdmin 4 no Modo Servidor


      Introdução

      O pgAdmin é uma plataforma opensource de administração e desenvolvimento para PostgreSQL e seus sistemas de gerenciamento de banco de dados relacionados. Escrito em Python e jQuery, ele suporta todos os recursos encontrados no PostgreSQL. Você pode utilizar o pgAdmin para fazer tudo, desde escrever consultas SQL básicas a monitorar seus bancos de dados e configurar arquiteturas de banco de dados avançadas.

      Neste tutorial, vamos passar pelo processo de instalação e configuração da versão mais recente do pgAdmin em um servidor Ubuntu 18.04, acessando o pgAdmin através de um navegador web, e conectando-o a um banco de dados PostgreSQL em seu servidor.

      Pré-requisitos

      Para completar este tutorial, você vai precisar de:

      Passo 1 — Instalando o pgAdmin e suas Dependências

      No momento da escrita desse tutorial, a versão mais recente do pgAdmin é a pgAdmin 4, enquanto a versão mais recente disponível através dos repositórios oficiais do Ubuntu é a pgAdmin 3. O pgAdmin 3 já não é suportado, e os mantenedores do projeto recomendam a instalação do pgAdmin 4. Neste passo, vamos passar pelo processo de instalação da versão mais recente do pgAdmin 4 dentro de um ambiente virtual (conforme recomendado pelo time de desenvolvimento do projeto) e pela instalação de suas dependências usando o apt.

      Para começar, atualize o índice de pacotes do seu servidor, se você não tiver feito isso recentemente:

      Em seguida, instale as seguintes dependências. Elas incluem a libgmp3-dev, uma biblioteca aritmética multiprecisão; libpq-dev,que inclui arquivos de cabeçalho e uma biblioteca estática que ajuda na comunicação com o backend do PostgreSQL; e libapache2-mod-wsgi-py3, um módulo do Apache que lhe permite hospedar aplicações web baseadas em Python dentro do Apache:

      • sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

      Em seguida, crie alguns diretórios nos quais o pgAdmin armazenará seus dados de sessões, dados de armazenamento e logs:

      • sudo mkdir -p /var/lib/pgadmin4/sessions
      • sudo mkdir /var/lib/pgadmin4/storage
      • sudo mkdir /var/log/pgadmin4

      Depois, altere a propriedade desses diretórios para seu usuário e grupo não-root. Isto é necessário porque eles são de propriedade do usuário root, mas vamos instalar o pgAdmin em um ambiente virtual que pertence ao seu usuário não-root, e o processo de instalação envolve a criação de alguns arquivos dentro desses diretórios. Após a instalação, contudo, vamos alterar a propriedade para o usuário e grupo www-data para que ele possa ser servido via web:

      • sudo chown -R sammy:sammy /var/lib/pgadmin4
      • sudo chown -R sammy:sammy /var/log/pgadmin4

      A seguir, abra o seu ambiente virtual. Navegue até o diretório onde está o seu ambiente virtual e ative-o. Seguindo a convenção de nomes do prerequisite Python 3 tutorial, vamos até o diretório environments e ativamos o ambiente my_env.

      • cd environments/
      • source my_env/bin/activate

      Depois disso, faça o download do código-fonte do pgAdmin4 em sua máquina. Para encontrar a última versão do código-fonte, navegue até a página de download do pgAdmin 4 (Python Wheel) e clique no link da última versão (3.4, no momento da escrita desse texto). Isso o levará para uma página de Downloads no website do PostgreSQL. Estando lá, copie o link de arquivo que termina com .whl — o formato de pacote padrão de construção utilizado para as distribuições Python. Volte então ao seu terminal e execute o seguinte comando wget, certificando-se de substituir o link por aquele que você copiou do website do PostgreSQL, que fará o download do arquivo .whl para seu servidor:

      • wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.4/pip/pgadmin4-3.4-py2.py3-none-any.whl

      Após isso, instale o pacote wheel, a implementação de referência do padrão de empacotamento wheel. Uma biblioteca Python, este pacote serve como uma extensão para a construção de wheels e inclui uma ferramenta de linha de comando para trabalhar com arquivos .whl:

      • python -m pip install wheel

      Então, instale o pacote pgAdmin com o seguinte comando:

      • python -m pip install pgadmin4-3.4-py2.py3-none-any.whl

      Isso cuida da instalação do pgAdmin e suas dependências. Antes de conectá-lo ao seu banco de dados, no entanto, você precisará fazer algumas alterações na configuração do programa.

      Passo 2 — Configurando o pgAdmin 4

      Embora o pgAdmin tenha sido instalado em seu servidor, existem ainda algumas etapas que você deve seguir para garantir que ele tenha as permissões e as configurações necessárias para permiti-lo servir corretamente a interface web.

      O arquivo principal de configuração do pgAdmin, config.py, é lido antes de qualquer outro arquivo de configuração. Seu conteúdo pode ser utilizado como um ponto de referência para outras configurações que podem ser especificadas nos outros arquivos de configuração do pgAdmin, mas para evitar erros imprevistos, você não deve editar o próprio arquivo config.py. Iremos adicionar algumas alterações de configuração em um novo arquivo, chamado config_local.py, que será lido depois do primeiro.

      Crie este arquivo agora utilizando seu editor de textos preferido. Aqui, vamos utilizar o nano:

      • nano my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

      Em seu editor de textos, adicione o seguinte conteúdo:

      environments/my_env/lib/python3.6/site-packages/pgadmin4/config_local.py

      
      LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
      SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
      SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
      STORAGE_DIR = '/var/lib/pgadmin4/storage'
      SERVER_MODE = True
      

      Aqui está o que estas cinco diretivas fazem:

      • LOG_FILE: isso define o arquivo no qual os logs do pgAdmin serão armazenados.

      • SQLITE_PATH: o pgAdmin armazena dados relacionados ao usuário em um banco de dados SQLite, e essa diretiva aponta o software pgAdmin para esse banco de dados de configuração. Como este arquivo está sob o diretório persistente /var/lib/pgadmin4/, seus dados de usuário não serão perdidos após a atualização.

      • SESSION_DB_PATH: especifica qual diretório será usado para armazenar dados da sessão.

      • STORAGE_DIR: define onde o pgAdmin armazenará outros dados, como backups e certificados de segurança.

      • SERVER_MODE: definir esta diretiva como True diz ao pgAdmin para rodar no modo Servidor, ao contrário do modo Desktop.

      Observe que cada um desses caminhos de arquivo aponta para os diretórios que você criou na Etapa 1.

      Depois de adicionar essas linhas, salve e feche o arquivo (pressione CTRL + X, seguido de Y e depois ENTER). Com essas configurações, execute o script de configuração do pgAdmin para definir suas credenciais de login:

      • python my_env/lib/python3.6/site-packages/pgadmin4/setup.py

      Depois de executar este comando, você verá um prompt solicitando seu endereço de e-mail e uma senha. Estas serão as suas credenciais de login quando você acessar o pgAdmin mais tarde, então lembre-se ou anote o que você digitar aqui:

      Output

      . . . Enter the email address and password to use for the initial pgAdmin user account: Email address: sammy@example.com Password: Retype password:

      Em seguida, desative seu ambiente virtual:

      Lembre-se dos caminhos de arquivos que você especificou no arquivo config_local.py. Esses arquivos são mantidos nos diretórios criados na Etapa 1, que atualmente são de propriedade do seu usuário não-root. Eles devem, no entanto, ser acessíveis pelo usuário e pelo grupo que está executando o seu servidor web. Por padrão, no Ubuntu 18.04, estes são o usuário e grupo www-data, portanto, atualize as permissões nos seguintes diretórios para dar ao www-data a propriedade sobre os dois:

      • sudo chown -R www-data:www-data /var/lib/pgadmin4/
      • sudo chown -R www-data:www-data /var/log/pgadmin4/

      Com isso, o pgAdmin está totalmente configurado. Contudo, o programa ainda não está sendo servido pelo seu servidor, então ele permanece inacessível. Para resolver isso, vamos configurar o Apache para servir o pgAdmin para que você possa acessar sua interface de usuário através de um navegador web.

      Passo 3 — Configurando o Apache

      O servidor web Apache utiliza virtual hosts para encpsular os detalhes de configuração e hospedar mais de um domínio a partir de um único servidor. Se você seguiu o tutorial de pré-requisitos do Apache, você pode ter configurado um exemplo de arquivo virtual host sob o nome example.com.conf, mas nesta etapa vamos criar um novo a partir do qual poderemos servir a interface web do pgAdmin.

      Para começar, certifique-se de que você está no seu diretório raiz:

      Em seguida, crie um novo arquivo em seu diretório /sites-available/ chamado pgadmin4.conf. Este será o arquivo de virtual host do seu servidor:

      • sudo nano /etc/apache2/sites-available/pgadmin4.conf

      Adicione o seguinte conteúdo a este arquivo, certificando-se de atualizar as partes destacadas para alinhar com sua própria configuração:

      /etc/apache2/sites-available/pgadmin4.conf

      
      <VirtualHost *>
          ServerName ip_do_seu_servidor
      
          WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home/sammy/environments/my_env
          WSGIScriptAlias / /home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/pgAdmin4.wsgi
      
          <Directory "/home/sammy/environments/my_env/lib/python3.6/site-packages/pgadmin4/">
              WSGIProcessGroup pgadmin
              WSGIApplicationGroup %{GLOBAL}
              Require all granted
          </Directory>
      </VirtualHost>
      

      Salve e feche o arquivo de virtual host. Depois, utilize o script a2dissite para desativar o arquivo de virtual host padrão, 000-default.conf:

      • sudo a2dissite 000-default.conf

      Nota: Se você seguiu o tutorial de pré-requisitos do Apache, você já pode ter desabilitado o 000-default.conf e configurado um exemplo de arquivo de configuração do virtual host (chamado example.com.conf no pré-requisito). Se este for o caso, você precisará desabilitar o arquivo de virtual host example.com.conf com o seguinte comando:

      • sudo a2dissite example.com.conf

      Depois, use o script a2ensite para ativar seu arquivo de virtual host pgadmin4.conf. Isso irá criar um link simbólico do arquivo de virtual host no diretório /sites-available/ para o diretório /sites-enabled/:

      • sudo a2ensite pgadmin4.conf

      Após isso, teste para ver se a sintaxe do seu arquivo de configuração está correta:

      Se seu arquivo de configuração estiver em ordem, você verá Syntax OK. Se você vir um erro na saída, reabra o arquivo pgadmin4.conf e verifique novamente se o seu endereço IP e os caminhos de arquivo estão corretos, em seguida execute novamente o configtest.

      Quando você vir Sintax OK na sua saída, reinicie o serviço Apache para que ele leia o novo arquivo de virtual host:

      • sudo systemctl restart apache2

      Agora, o pgAdmin está totalmente instalado e configurado. A seguir, veremos como acessar o pgAdmin a partir de um navegador antes de conectá-lo ao seu banco de dados PostgreSQL.

      Passo 4 — Acessando o pgAdmin

      Em sua máquina local, abra o seu navegador preferido e navegue até o endereço IP do seu servidor:

      http://ip_do_seu_servidor
      

      Uma vez lá, você verá uma tela de login semelhante à seguinte:

      Insira as credenciais de login que você definiu no Passo 2, e você será levado para a Tela de Boas-vindas do pgAdmin:

      Agora que você confirmou que pode acessar a interface do pgAdmin, tudo o que resta a fazer é conectar o pgAdmin ao seu banco de dados PostgreSQL. Antes de fazer isso, porém, você precisará fazer uma pequena alteração na configuração do superusuário do PostgreSQL.

      Passo 5 — Configurando seu usuário do PostgreSQL

      Se você seguiu o tutorial de pré-requisitos do PostgreSQL, você já deve ter o PostgreSQL instalado em seu servidor com uma nova função de superusuário e uma configuração de banco de dados.

      Por padrão no PostgreSQL, você autentica como usuário do banco de dados usando o método de autenticação "Protocolo de Identificação", ou "ident". Isso envolve o PostgreSQL utilizar o nome de usuário do Ubuntu do cliente e usá-lo como o nome de usuário permitido do banco de dados. Isso pode permitir maior segurança em muitos casos, mas também pode causar problemas nos casos em que você deseja que um programa externo, como o pgAdmin, se conecte a um dos seus bancos de dados. Para resolver isso, vamos definir uma senha para esta função do PostgreSQL que permitirá ao pgAdmin se conectar ao seu banco de dados.

      A partir do seu terminal, abra o prompt do PostgreSQL sob sua função de superusuário:

      A partir do prompt do PostgreSQL, atualize o perfil do usuário para ter uma senha forte de sua escolha:

      • ALTER USER sammy PASSWORD 'senha';

      Agora, saia do prompt do PostgreSQL:

      Em seguida, volte para a interface do pgAdmin 4 em seu navegador e localize o menu Browser no lado esquerdo. Clique com o botão direito do mouse em Servers para abrir um menu de contexto, passe o mouse sobre Create e clique em Server….

      Isso fará com que uma janela apareça no seu navegador, na qual você inserirá informações sobre seu servidor, função e banco de dados.

      Na guia General, digite o nome para esse servidor. Isso pode ser qualquer coisa que você queira, mas talvez seja útil fazer algo descritivo. Em nosso exemplo, o servidor é chamado Sammy-server-1.

      A seguir, clique na aba Connection. No campo Host name/address, insira localhost. Port deve ser definida para 5432 por padrão, o que irá funcionar para essa configuração, pois é a porta padrão utilizada pelo PostgreSQL. Observe que esse banco de dados já deve estar criado em seu servidor.

      No campo Maintenance database, insira o nome do banco de dados ao qual você gostaria de se conectar. Em seguida, insira o nome de usuário e a senha do PostgreSQL que você configurou anteriormente nos campos Username e Password, respectivamente.

      Os campos vazios nas outras guias são opcionais, e é necessário preenchê-los apenas se você tiver uma configuração específica em mente na qual eles sejam necessários. Clique no botão Save e o banco de dados aparecerá sob Servers no menu Browser.

      Você conectou com sucesso o pgAdmin4 ao seu banco de dados PostgreSQL. Você pode fazer praticamente qualquer coisa no painel do pgAdmin que você faria no prompt do PostgreSQL. Para ilustrar isso, vamos criar uma tabela de exemplo e preenchê-la com alguns dados de amostra através da interface web.

      Passo 6 — Criando uma Tabela no Painel do pgAdmin

      No painel do pgAdmin, localize o menu Browser no lado esquerdo da janela. Clique no sinal de mais (+) próximo de Servers (1) para expandir o menu em árvore dentro dele. Em seguida, clique no sinal de mais à esquerda do servidor que você adicionou na etapa anterior (Sammy-server-1 em nosso exemplo), depois expanda Databases, o nome do banco de dados que você adicionou (sammy, em nosso exemplo), e então Schemas (1). Você deve ver um menu em árvore como o seguinte:

      Clique com o botão direito do mouse no item Tables da lista , depois passe o cursor sobre Create e clique em Table….

      Isso abrirá uma janela Create-Table. Sob a guia General dessa janela, insira um nome para a tabela. Isso pode ser qualquer coisa que você quiser, mas para manter as coisas simples, vamos nos referir a ela como table-01.

      Em seguida, navegue até a guia Columns e clique no sinal de + no canto superior direito da janela para adicionar algumas colunas. Ao adicionar uma coluna, você deve fornecer um Name ou nome e um Data type ou tipo de dados, e você pode precisar escolher um Length ou comprimento se for exigido pelo tipo de dados que você selecionou.

      Além disso, a documentação oficial do PostgreSQL afirma que adicionar uma chave primária ou primary key a uma tabela geralmente é a melhor prática. Uma chave primária é uma restrição que indica uma coluna específica ou conjunto de colunas que podem ser usadas como um identificador especial para linhas na tabela. Isso não é um requisito, mas se você quiser definir uma ou mais de suas colunas como a chave primária, alterne o botão mais à direita de No para Yes.

      Clique no botão Save para criar a tabela.

      Nesse ponto, você criou uma tabela e adicionou algumas colunas a ela. No entanto, as colunas ainda não contêm dados. Para adicionar dados à sua nova tabela, clique com o botão direito do mouse no nome da tabela no menu Browser, passe o cursor sobre Scripts e clique em INSERT Script.

      Isso abrirá uma nova tela no painel. No topo, você verá uma instrução INSERT parcialmente completa, com os nomes de tabela e coluna apropriados. Vá em frente e substitua os pontos de interrogação (?) por alguns dados fictícios, certificando-se de que os dados adicionados se alinham aos tipos de dados selecionados para cada coluna. Observe que você também pode adicionar várias linhas de dados através da adição de cada linha em um novo conjunto de parênteses, com cada conjunto de parênteses separados por uma vírgula, conforme mostrado no exemplo a seguir.

      Se desejar, sinta-se à vontade para substituir o script INSERT parcialmente concluído com este exemplo de comando INSERT:

      INSERT INTO public."table-01"(
          col1, col2, col3)
          VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556);
      

      Clique no ícone do raio (⚡) para executar o comando INSERT. Para visualizar a tabela e todos os dados nela, clique mais uma vez com o botão direito do mouse no nome da sua tabela no menu Browser, passe o cursor sobre View/Edit Data e selecione All Rows.

      Isso abrirá outro novo painel, abaixo do qual, na guia Data Output do painel inferior, você pode ver todos os dados contidos nessa tabela.

      Com isso, você criou com sucesso uma tabela e a preencheu com alguns dados por meio da interface web do pgAdmin. Claro, este é apenas um método que você pode usar para criar uma tabela através do pgAdmin. Por exemplo, é possível criar e preencher uma tabela usando SQL em vez do método baseado em GUI descrito nesta etapa.

      Conclusão

      Neste guia, você aprendeu como instalar o pgAdmin 4 a partir de um ambiente virtual Python, configurá-lo, servi-lo via web com o Apache e como conectá-lo a um banco de dados PostgreSQL. Além disso, este guia abordou um método que pode ser usado para criar e preencher uma tabela, mas o pgAdmin pode ser usado para muito mais do que apenas criar e editar tabelas.

      Para obter mais informações sobre como aproveitar ao máximo todos os recursos do pgAdmin, recomendamos que você veja a documentação do projeto. Você também pode aprender mais sobre o PostgreSQL através dos nossos Tutoriais da comunidade que abordam o assunto.

      Por Mark Drake



      Source link

      Como Instalar e Usar o Docker no Ubuntu 18.04


      Uma versão anterior deste tutorial foi escrita por finid.

      Introdução

      O Docker é uma aplicação que simplifica a maneira de gerenciar processos de aplicativos em containers. Os containers lhe permitem executar suas aplicações em processos com isolamento de recursos. Eles são semelhantes às máquinas virtuais, mas os containers são mais portáteis, possuem recursos mais amigáveis, e são mais dependentes do sistema operacional do host.

      Para uma introdução detalhada aos diferentes componentes de um container Docker, dê uma olhada em O Ecossistema do Docker: Uma Introdução aos Componentes Comuns.

      Neste tutorial, você irá instalar e utilizar o Docker Community Edition (CE) no Ubuntu 18.04. Você instalará o próprio Docker, trabalhará com containers e imagens, e irá 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 teremos a última versão, vamos instalar o Docker a partir do repositório oficial do projeto. Para fazer isto, vamos adicionar uma nova fonte de pacotes, adicionar a chave GPG do Docker para garantir que os downloads são válidos, e então instalar os pacotes.

      Primeiro, atualize sua lista atual de pacotes:

      Em seguida, instale alguns pacotes de pré-requisitos que permitem que o apt utilize pacotes via 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 em 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 bionic stable"

      A seguir, atualize o banco de dados de pacotes com os pacotes Docker do repositório recém adicionado:

      Certifique-se de que você irá instalar a partir do repositório do Docker em vez do repositório padrão do Ubuntu:

      • apt-cache policy docker-ce

      Você verá uma saída como esta, embora o número da versão do Docker possa estar diferente:

      Output of apt-cache policy docker-ce

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

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

      Finalmente, instale o Docker:

      • sudo apt install docker-ce

      O Docker agora deve ser instalado, o daemon iniciado e o processo ativado para iniciar na inicialização. Verifique se ele está sendo executado:

      • sudo systemctl status docker

      A saída deve ser semelhante à seguinte, mostrando que o serviço está ativo e executando:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 10096 (dockerd) Tasks: 16 CGroup: /system.slice/docker.service ├─10096 /usr/bin/dockerd -H fd:// └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

      A instalação do Docker agora oferece não apenas o serviço Docker (daemon), mas também o utilitário de linha de comando docker ou o cliente Docker. Vamos explorar como usar o comando docker mais adiante 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 do grupo docker, que é automaticamente criado durante o processo de instalação do Docker. Se você tentar executar o comando docker sem prefixá-lo com sudo ou sem estar no grupo docker, você obterá uma saída como esta:

      Output

      docker: 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 ao grupo docker:

      • sudo usermod -aG docker ${USER}

      Para aplicar a nova associação ao grupo, efetue logout do servidor e faça logon novamente ou digite o seguinte:

      Você será solicitado a entrar com seu usuário e senha para continuar.

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

      Output

      sammy sudo docker

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

      • sudo usermod -aG docker nome-do-usuário

      O restante desse artigo assume que você está executando o comando docker como um usuário do grupo docker. Se você optar por não fazê-lo, por favor, prefixe os comandos com sudo.

      A seguir, vamos explorar o comando docker.

      Passo 3 — Usando o Comando Docker

      A utilização do comando docker consiste em passar a ele uma cadeia de opções e comandos seguidos de argumentos. A sintaxe assume este formato:

      • docker [option] [command] [arguments]

      Para ver todos os subcomandos disponíveis, digite:

      A partir do Docker 18, 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 ver as opções disponíveis para um comando específico, digite:

      • docker subcomando-docker --help

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

      Vamos explorar alguns desses comandos. Vamos começar trabalhando com imagens.

      Os containers Docker são construídos a partir de imagens Docker. Por padrão, o Docker extrai essas imagens do Docker Hub, um registro Docker mantido pela Docker, a empresa por trás do projeto Docker. Qualquer pessoa pode hospedar suas imagens do Docker no Docker Hub, portanto, a maioria dos aplicativos e distribuições do Linux que você precisa terá imagens hospedadas lá.

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

      A saída irá indicar que o Docker está funcionando corretamente:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pull complete Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

      Inicialmente, o Docker foi incapaz de encontrar a imagem hello-world localmente, então baixou a imagem do Docker Hub, que é o repositório padrão. Depois que a imagem foi baixada, o Docker criou um container a partir da imagem e o aplicativo dentro do container foi executado, exibindo a mensagem.

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

      O script rastreará o Docker Hub e retornará uma listagem de todas as imagens cujo nome corresponde à string de pesquisa. Nesse caso, a saída será similar a essa:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 7917 [OK] dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 193 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 156 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 93 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 87 [OK] neurodebian NeuroDebian provides neuroscience research s… 50 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components=m… 38 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 36 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK] tutum/ubuntu Simple Ubuntu docker images with SSH access 18 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 13 ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 10 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10 ubuntu-16-nginx-php-phpmyadmin-mariadb-10 6 [OK] eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK] codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 4 [OK] darksheer/ubuntu Base Ubuntu Image -- Updated hourly 4 [OK] 1and1internet/ubuntu-16-apache ubuntu-16-apache 3 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 3 [OK] 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK] pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 1 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK] pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0 smartentry/ubuntu ubuntu with smartentry 0 [OK] ossobv/ubuntu ...

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

      Execute o seguinte comando para baixar a imagem oficial do ubuntu para seu computador:

      Você verá a seguinte saída:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest

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

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

      A saída deve ser semelhante à seguinte:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      Como você verá posteriormente nesse tutorial, as imagens que você usa para executar containers podem ser modificadas e utilizadas para gerar novas imagens, que podem ser enviadas (fazer um push, em termos técnicos) para o Docker Hub ou outros registros Docker.

      Vamos dar uma olhada em como executar containers em mais detalhes.

      Passo 5 — Executando um Container Docker

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

      Como um exemplo, vamos executar um container usando a versão mais recente do ubuntu. A combinação das chaves -i e -t dá a você um acesso a um shell interativo dentro do container:

      Seu prompt de comando deve mudar para refletir o fato de que você agora está trabalhando dentro do container e deve assumir essa forma:

      Output

      root@d9b100f2f636:/#

      Observe o id do container no prompt de comando. Nesse exemplo, ele é d9b100f2f636. Você precisará do ID do container posteriormente para identificar o container quando quiser removê-lo.

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

      A seguir, instale qualquer aplicação dentro dele. Vamos instalar o Node.js:

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

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

      Output

      v8.10.0

      Quaisquer alterações feitas no container só se aplicam a esse container.

      Para sair do container, digite exit no prompt.

      A seguir, vamos analisar o gerenciamento dos containers em nosso sistema.

      Passo 6 — Gerenciando Containers Docker

      Depois de usar o Docker por um tempo, você terá muitos containers ativos (em execução) e inativos em seu computador. Para ver os containers ativos, utilize:

      Você verá uma saída similar à seguinte:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      Neste tutorial, você iniciou dois containers; um a partir da imagem hello-world e outro a partir da imagem ubuntu. Ambos os containers não estão mais executando, mas eles ainda existem em seu sistema.

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

      Você verá uma saída semelhante a esta:

      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
      01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams
      

      Para ver o último container que você criou, passe a ele a chave -l:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • d9b100f2f636 ubuntu "/bin/bash" About an hour ago Exited (0) 10 minutes ago sharp_volhard

      Para iniciar um container parado, use docker start, seguido pelo ID do container ou o nome dele. Vamos iniciar o container baseado no Ubuntu com o ID d9b100f2f636:

      • docker start d9b100f2f636

      O container vai iniciar, e você pode usar docker ps para ver seu status:

      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard
      

      Para parar um container em execução, use docker stop, seguido do nome ou ID do container. Dessa vez, vamos usar o nome que o registro Docker atribuiu ao container, que é sharp_volhard:

      • docker stop sharp_volhard

      Depois que você decidir que não precisa mais de um container, remova-o com o comando docker rm, novamente usando ou o ID do container ou seu nome. Use o comando docker ps -a para encontrar o ID ou o nome do container associado à imagem hello-world e remova-o.

      • docker rm festive_williams

      Você pode inciar um novo container e dar a ele um nome utilizando a chave --name. Você também pode utilizar a chave --rm para criar um container que se auto remove quando é parado. Veja o comando docker run help para 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 — Fazendo Commit de Alterações em um Container para uma Imagem Docker

      Quando você inicia uma imagem Docker, você pode criar, modificar e excluir arquivos da mesma forma que você faz em máquinas virtuais. As alterações que você fizer serão aplicadas apenas a esse container. Você pode iniciá-lo ou pará-lo, mas uma vez que você o destrua com o comando docker rm, as mudanças serão perdidas para sempre.

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

      Depois de instalar o Node.js dentro do container Ubuntu, você tem agora um container executando a partir de uma imagem, mas o container é diferente da imagem que você usou para criá-lo. Mas você pode querer reutilizar esse container Node.js como base para novas imagens posteriormente.

      Então, faça o commit das alterações em uma nova instância de imagem do Docker usando o seguinte comando.

      • docker commit -m "O que você fez na imagem" -a "Nome do Autor" container_id repositório/novo_nome_da_imagem

      A chave -m é para a mensagem de commit que ajuda você e outras pessoas saberem quais mudanças você fez, enquanto -a é usado para especificar o autor. O container_id é aquele que você observou anteriormente no tutorial quando iniciou a sessão interativa do Docker. A menos que você tenha criado repositórios adicionais no Docker Hub, o repositório geralmente é seu nome de usuário do Docker Hub.

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

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

      Quando você faz o commit de uma imagem, a nova imagem é salva localmente em seu computador. Posteriormente, nesse tutorial, você aprenderá a enviar uma imagem para um registro do Docker, como o Docker Hub, para que outras pessoas possam acessá-la.

      Ao listar as imagens do Docker novamente será mostrado a nova imagem, bem como a antiga da qual foi derivada:

      docker images
      

      Você verá uma saída como essa:

      Output
      REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
      sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
      ubuntu                   latest              113a43faa138        4 weeks ago         81.2MB
      hello-world              latest              e38bc07ac18e        2 months ago        1.85kB
      

      Neste exemplo, ubuntu-nodejs é a nova imagem, a qual foi derivada da imagem existente ubuntu do Docker Hub. A diferença de tamanho reflete as alterações 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 simplesmente usar a nova imagem.

      Você também pode criar imagens a partir de um Dockerfile, que permite automatizar a instalação de software em uma nova imagem. No entanto, isso está fora do escopo deste tutorial.

      Agora vamos compartilhar a nova imagem com outras pessoas para que elas possam criar containers a partir dela.

      Passo 8 — Enviando Imagens Docker para um Repositório Docker

      A próxima etapa lógica após criar uma nova imagem a partir de uma imagem existente é compartilhá-la com alguns poucos amigos selecionados, o mundo inteiro no Docker Hub ou outro registro do Docker ao qual você tem acesso. Para enviar uma imagem para o Docker Hub ou qualquer outro registro Docker, você deve ter uma conta lá.

      Esta seção mostra como enviar uma imagem do Docker para o Docker Hub. Para aprender como criar seu próprio registro privado do Docker, confira How To Set Up a Private Docker Registry on Ubuntu 14.04.

      Para enviar sua imagem, primeiro efetue o login no Docker Hub.

      • docker login -u nome-de-usuário-do-registro-docker

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

      Note: Se seu nome de usuário do registro do Docker for diferente do nome de usuário local usado para criar a imagem, você terá que marcar sua imagem com o nome de usuário do registro. Para o exemplo dado na última etapa, você digitaria:

      • docker tag sammy/ubuntu-nodejs nome-de-usuário-do-registro-docker/ubuntu-nodejs

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

      • docker push nome-de-usuário-do-registro-docker/nome-da-imagem-docker

      Para enviar a imagem ubuntu-nodejs para o repositório sammy, o comando seria:

      • docker push sammy/ubuntu-nodejs

      O processo pode levar algum tempo para ser concluído enquanto ele carrega as imagens, mas quando concluído, a saída será algo assim:

      Output

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

      Após o envio de uma imagem para um registro, ela deve ser listada no dashboard de sua conta, como aquele mostrado na imagem abaixo:

      Se uma tentativa de envio resultar em um erro desse tipo, provavelmente você não efetuou login:

      Output

      The 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

      Faça login com docker login e repita a tentativa de envio. Em seguida, verifique que ela existe na sua página de repositório do Docker Hub.

      Agora voce pode usar docker pull sammy/ubuntu-nodejs para para puxar a imagem para uma nova máquina e usá-la para executar um novo container.

      Conclusão

      Neste tutorial, você instalou o Docker, trabalhou com imagens e containers e enviou uma imagem modificada para o Docker Hub. Agora que você conhece o básico, explore os outros tutoriais do Docker na comunidade da DigitalOcean.

      Por Brian Hogan



      Source link