Uma introdução prática aos recipientes do Docker

Uma introdução prática aos recipientes do Docker

A popularidade de Docker disparou desde a introdução em 2013. Empresas e indivíduos agora usam ou planejam usá -lo, seja em instalações ou na nuvem. A flexibilidade do Docker apela a desenvolvedores, administradores de sistemas e gerenciamento.

Este artigo mostra como começar com o Docker, mostrando comandos básicos para levá -lo ao movimento do contêiner.

Neste tutorial, você aprenderá:

  • O que é Docker e como é usado.
  • Como instalar o Docker no Linux.
  • Como executar contêineres do Docker.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer distribuição Linux
Programas Docker
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Conceitos básicos do docker

Plataformas de virtualização tradicionais, como VirtualBox e VMware, abstraem um computador inteiro, com o objetivo de isolar o hospedar e convidado sistemas operacionais e exigindo que todo um sistema operacional seja instalado no convidado Máquina Virtual (VM). A virtualização do Docker adota uma abordagem diferente - abstraia apenas o sistema operacional, o que significa que o host e os convidados compartilham o mesmo núcleo.

As vantagens são isso convidados (chamado containers) não precisa embalar um sistema operacional inteiro, o que os torna leves - pequenos em tamanho e muito rápido para inicializar. Além disso, ao interface diretamente com o sistema operacional host, os contêineres do docker não incorrem nas penalidades de desempenho da virtualização tradicional, o que requer a tradução de chamadas do sistema entre os sistemas operacionais de hóspedes e host através de drivers que abstraem um hardware virtual.

As desvantagens são que não é possível hospedar um host do Windows em um host Linux, por exemplo, e que todos os convidados compartilham recursos (CPU, RAM e disco) no host, o que significa que um contêiner mal se comportou pode reduzir todo o servidor. É certo que o Docker não pretende substituir a virtualização tradicional, que ainda possui muitos cenários válidos. Ele apenas fornece outra maneira de obter isolamento de aplicativos enquanto reduz as dependências das bibliotecas, sem perder o desempenho.

Docker permite que você seja lançado containers, que são instâncias de execução de imagens. Uma imagem contém o disco com todas as dependências de bibliotecas necessárias para executar um aplicativo, enquanto um contêiner contém o contexto da execução. Pode haver vários recipientes da mesma imagem em execução ao mesmo tempo, cada um separado dos outros.

Há uma recomendação de que um contêiner do Docker execute apenas um aplicativo, que freqüentemente é mal interpretado para “executar apenas um processo”. Não há problema para executar mais de um processo em um contêiner, desde que pertencem ao mesmo aplicativo. Um aplicativo complexo pode, no entanto, exigir a execução de vários contêineres, como, por exemplo, um para o servidor da web (apache, nginx), um para o aplicativo (php-fpm) e outro para o banco de dados (mysql, postgreSQL, mongodbb ). Esses contêineres podem ser executados no mesmo ou em hosts diferentes. Contêineres no mesmo host se comunicar através de uma rede virtual gerenciada pelo Docker.



As imagens do Docker são recuperadas de um repositório nomeado registro e são armazenados em cache localmente. Se um registro não for especificado, o Docker tentará encontrar a imagem no repositório padrão, chamado Docker Hub. O Docker Hub contém uma enorme quantidade de imagens prontas para serem usadas por empresas e indivíduos - e você pode publicar suas imagens também. Além disso, há também o Docker Store, onde as empresas podem oferecer profissionalmente imagens com curadoria de seu software. É recomendável que você passe algum tempo navegando e aprendendo como esses repositórios funcionam.

O suficiente disse, vamos instalar o Docker e aprender alguns comandos básicos.

Instalando o Docker no Linux

Ubuntu

Em Ubuntu Bionic Beaver 18.04, ter o docker instalado é direto.

# APT Install Docker.io 

Debian

Se você estiver executando testes do Debian ou instável, o comando acima também funcionará. Para o Debian Stable (Stretch), visite nosso mecanismo Docker no Debian 9 Stretch Linux Instalation Guide.

CENTOS

No CentOS 1804, é um yum comando.

# yum install docker 

Fedora

No Fedora 28, também está pronto para ser instalado com um DNF comando.

# dnf install docker 

Após a instalação do Docker

Depois de instalado, você pode verificar o serviço do docker.

# Status do Docker de Serviço 

Se não for, então comece.

# serviço de serviço inicial 

Depois que o serviço estiver em execução, você pode verificar se existem contêineres em execução.

# Docker PS 

Se você não quiser digitar sudo Para interagir com o serviço Docker, basta adicionar seu usuário ao Docker Group. Você precisa fazer login novamente para fazer a mudança entrar em vigor.

# UserMod -a -g Docker Nome de usuário 

Após o login, verifique se você está no Docker Group

$ GRUPOS ROGER ADM CDROM SUDO DIP PUGDEV LPADMIN SAMBASHARE Docker 


Agora você não precisa sudo Para interagir com o motor do documento.

Executando um contêiner do Docker

Vamos executar um Olá Mundo recipiente.

$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world d1725b59e92d: Pull complete Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788 Status: Downloaded newer image for hello-world:latest Hello from Docker! Esta mensagem mostra que sua instalação parece estar funcionando corretamente. Para gerar esta mensagem, Docker tomou as seguintes etapas: 1. O cliente do Docker entrou em contato com o daemon do Docker. 2. O Docker Daemon puxou a imagem "Hello-World" do Docker Hub. (AMD64) 3. O Docker Daemon criou um novo contêiner a partir dessa imagem que executa o executável que produz a saída que você está lendo atualmente. 4. O daemon do Docker transmitiu essa saída para o cliente Docker, que o enviou para o seu terminal. Para tentar algo mais ambicioso, você pode executar um contêiner do Ubuntu com: $ Docker Run -It Ubuntu Bash Compartilhar imagens, automatizar fluxos de trabalho e muito mais com um Docker ID: https: // hub.Docker.com/Para mais exemplos e idéias, visite: https: // docs.Docker.COM/GET-STARTED/ 
cópia de

O comando é realmente simples, mas muitas coisas aconteceram. Primeiro, o mecanismo Docker percebeu que a imagem solicitada não estava no cache local (linha 2). Em seguida, a imagem é retirada do registro do Docker e armazenada localmente (linha 3). Finalmente, um contêiner é criado, executado (linha 8) e terminado. Se você tentar novamente, você notará que a execução é muito mais rápida, já que ambos, imagem e contêiner, serão cacheados. Agora verifique as imagens armazenadas localmente.

$ Docker Images Repositório Tag Id Criado Tamanho Hello-World mais recente 4AB4C602AA5E 2 semanas atrás 1.84kb 
cópia de

Observe que o Olá Mundo A imagem é mínima, com apenas 1.84 kb de tamanho. Isso ilustra que grande parte do sistema operacional host é usado e que a imagem contém apenas as dependências do aplicativo.

Você pode remover esta imagem.

$ Docker Images RM Hello-World $ Docker Images 

Agora, vamos fazer algo mais ambicioso: puxe e apache webserver imagem e execute um contêiner.

$ docker pule httpd usando a etiqueta padrão: mais recente: puxando da biblioteca/httpd f189db1b88b3: puxe com completa Ba2d31d4e2e7: pule complete 23a65f5e3746: pule complete 5E8ECCBD4BC6: PULLA 4C145EC188DAC106DATA101ATATATATATA101ATATATATA1010: PULLATA1010: PULLATATA101ATO1ATATATATA101ATATATATA101A: 8631904C6E92918B6C7DD82B72512714E7FBC3F1A1ACE2DE17CB2746C401B8FB STATUS DE PERSONATEMENDOMEDOMENTO DOURSOMENTE 4B 4 Último 4Art 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4k 4ab 4 mais 40Ar 4Ar 4B 4Art 4Art 4Abr 4B 4Art 4Abr 4B 4Art 4Abrum 4Art 4Abrum 4Art 4Abrum 4Art 4Abrum 4Art 4Abr 4B 4Abrum 4ab 4 Último.84KB HTTPD mais recente D595A4011AE3 6 semanas atrás 178MB 
cópia de

Então você executa um contêiner desta imagem.

$ docker run -d -p 8000: 80 httpd dd703b1590a91bdc10488b48798e42ddecd1c6519324a613f4b5563c21874a98 roger@slash: ~ $ docker psocker PSOCER PSER CONTESTO.0.0.0: 8000-> 80/tcp cranky_torvalds 
cópia de

Na sua forma mais simples, o comando seria Docker Run Httpd, Mas o contêiner seria interrompido logo após o Apache estar em funcionamento, e nenhuma porta seria exposta. O -d (destacar) é necessária a opção para que o contêiner permaneça em segundo plano.

O -P 8000: 80 A opção é o mapeamento da porta 80 do contêiner para a porta 8000 no host, disponibilizando o servidor da web na rede. Por padrão, as portas de contêiner não são expostas ao host. Agora, você pode apontar um navegador da web para http: // localhost: 8000 e veja a página de teste do Apache.



Página padrão do apache indicando que está funcionando

Ok, mas como mudar a página da web? Precisamos vincular uma pasta do host ao recipiente /usr/local/apache2/htdocs/ Diretório (veremos mais tarde que a imagem do Apache é construída a partir de um Debian Jessy, independentemente do sabor Linux do seu host). Pare o recipiente e execute -o novamente.

$ docker ps $ docker pare cranky_torvalds $ echo "minha página da web"> índice.HTML $ Docker Run -D -P 8000: 80 -V "$ PWD":/usr/local/apache2/htdocs/httpd 
cópia de

Nós criamos um índice.html arquivo no diretório atual no host e mapeou este diretório dentro do htdocs diretório do contêiner com o -v trocar. Agora atualize o navegador da web.

Índice.html

Agora a cobertura: experimento editando o índice.html Arquive no host e atualize o navegador da web, sem alterar o estado do contêiner. Sim, sempre que um arquivo é editado, ou um novo arquivo é adicionado ao diretório atual, ele é disponibilizado dentro do contêiner devido ao -v mapeamento.

Crie outro arquivo e acesse -o no navegador.

$ echo "segunda página"> index2.html 


Index2.html

Quando terminar, pare a execução do contêiner.

$ Docker Stop Angry_Poincare 

Observe que agora você tem um servidor da web pronto para ser executado sempre que precisar e não tocou nenhum arquivo de configuração no seu sistema operacional. Tudo está encapsulado na imagem Apache que é armazenada em cache por Docker. Além disso, você pode baixar a imagem e iniciar um contêiner em qualquer outro computador.

Conclusão

Este artigo introduziu os principais conceitos do Docker e alguns comandos básicos. Espero que você entenda os benefícios e veja que, uma vez que os conceitos sejam entendidos, não é complicado usar o Docker. Artigos futuros apresentarão outros recursos e casos de uso.

Mais nesta série de artigos do docker

  • Como interagir com os contêineres do Docker
  • Como personalizar imagens do Docker com Dockerfiles

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Mastering Bash Script Loops
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes
  • Melhor distro Linux para desenvolvedores
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Coisas para instalar no Ubuntu 22.04
  • Download do Linux
  • Como fazer bota dupla kali linux e windows 10