Docker. Cria aplicativos embalados chamado recipientes. Cada contêiner fornece um ambiente isolado semelhante a máquina virtual (VM). Ao contrário das VMs, recipientes de Docker Não execute um sistema operacional completo . Eles compartilham o kernel do seu anfitrião e virtualizam em nível de software.
Noções básicas de Docker.
O Docker tornou-se uma ferramenta padrão para desenvolvedores de software e administradores do sistema. É uma maneira legal de lançar rapidamente os aplicativos sem impactar o resto do seu sistema. Você pode girar um novo serviço com um único
Docker Run.
comando.
Os contêineres encapsulam tudo o que é necessário para executar um aplicativo, de dependências do sistema operacional ao seu próprio código-fonte. Você define as etapas de criação de um contêiner como instruções em um
DockerFile.
. O Docker usa o Dockerfile para construir um
imagem
.
As imagens definem o software disponível em contêineres. Isso é solamente equivalente a iniciar uma VM com um sistema operacional ISO. Se você criar uma imagem, qualquer usuário do Docker poderá iniciar seu aplicativo com
Docker Run.
.
Como funciona o Docker?
Os contêineres utilizam recursos do kernel do sistema operacional para fornecer ambientes parcialmente virtualizados. É possível criar recipientes do zero com comandos como
chroot.
. Isso inicia um processo com um diretório raiz especificado em vez da raiz do sistema. Mas usando recursos do kernel diretamente é fiddly, inseguro e propenso a erros.
O Docker é uma solução completa para a produção, distribuição e uso de contêineres. Lançamentos modernos de encaixe são compostos de Vários componentes independentes . Primeiro, há o encaixe Cli. , que é o que você interage no seu terminal. O CLI envia comandos para um Daemon de Docker. . Isso pode executar localmente ou Em um host remoto . O daemon é responsável por gerenciar contêineres e imagens que são criadas.
O componente final é chamado de Tempo de execução do contêiner . O tempo de execução invoca recursos do kernel para lançar recipientes. Docker é compatível com as runtimes que aderem ao Especificação de oci. Este padrão aberto permite a interoperabilidade entre diferentes ferramentas de contêinerização.
Você não precisa se preocupar muito com o funcionamento interno do Docker quando você é primeiro começar. Instalando
Docker.
Em seu sistema, você dará tudo o que você precisa para construir e executar contêineres.
Por que tantas pessoas usam o Docker?
Os recipientes tornaram-se tão populares porque resolvem muitos desafios comuns no desenvolvimento de software. A capacidade de conter uma vez e correr em todos os lugares reduz a lacuna entre Seu ambiente de desenvolvimento e seus servidores de produção.
O uso de contêineres lhe dá confiança de que todo ambiente é idêntico. Se você tem um novo membro da equipe, eles só precisam
Docker Run.
para configurar sua própria instância de desenvolvimento. Quando você inicia seu serviço, você pode usar sua imagem de Docker para implantar para a produção. o
ambiente ao vivo
irá corresponder exatamente à sua instância local, evitando "funciona nos cenários da minha máquina".
O encaixe é mais conveniente do que uma máquina virtual completa. As VMs são ferramentas de uso geral projetadas para suportar todas as cargas de trabalho possíveis. Em contraste, os recipientes são leves, auto-suficientes e mais adequados para casos de uso descartável. Como o Docker compartilha o kernel do hospedeiro, os contêineres têm um impacto insignificante no desempenho do sistema. O tempo de lançamento do contêiner é quase instantâneo, pois você está apenas iniciando processos, nem um sistema operacional inteiro.
Começando
O Docker está disponível em todas as distribuições populares do Linux. Ele também é executado no Windows e MacOS. Segue o Instruções de configuração do Docker para sua plataforma para colocá-lo e correr.
Você pode verificar se sua instalação está funcionando, iniciando um contêiner simples:
Docker correr Olá-World
Isso iniciará um novo contêiner com o básico
Olá Mundo
imagem. A imagem emite alguma saída explicando como usar o Docker. O recipiente então sai, desistindo de volta ao seu terminal.
Criando imagens.
Depois de correr
Olá Mundo
, você está pronto para criar suas próprias imagens de Docker. Um DockerFile descreve como executar seu serviço por
Instalando o software necessário
e copiando em arquivos. Aqui está um exemplo simples usando o servidor da Web Apache:
do httpd: mais recente Executar echo "loadmodule headers_module módulos / mod_headers.so" & gt; & gt; /usr/local/apache2/conf/httpd.conf. Copiar .htaccess /var/www/html/.htaccess. Cópia index.html /var/www/html/index.html. Copie CSS / / VAR / WWW / HTML / CSS
o
A PARTIR DE
linha define a imagem base. Neste caso, estamos começando a partir da imagem oficial do Apache. O Docker aplica as instruções restantes no seu DockerFile no topo da imagem base.
o
CORRE
O estágio executa um comando dentro do contêiner. Este pode ser qualquer comando disponível no ambiente do contêiner. Estamos habilitando o
cabeçalhos
Módulo apache, que poderia ser usado pelo
.htaccess.
arquivo para configurar as regras de roteamento.
As linhas finais copiam os arquivos HTML e CSS em seu diretório de trabalho na imagem do contêiner. Sua imagem agora contém tudo o que você precisa para executar seu site.
Agora, você pode construir a imagem:
Docker Build -t My-Website: v1.
O Docker usará seu DockerFile para construir a imagem. Você verá a saída em seu terminal, pois o Docker executa cada uma das suas instruções.
o
-t.
no comando
Tag sua imagem
com um determinado nome (
My-Website: v1
). Isso facilita a se referir no futuro. Tags têm dois componentes, separados por um cólon. A primeira parte define o nome da imagem, enquanto o segundo geralmente denota sua versão. Se você omitir o cólon, o Docker será o padrão
para usar
Mais recentes
como a versão da tag.
o
.
No final do comando, informa o Docker para usar o DockerFile em seu diretório local. Isso também
Define o contexto de construção
, permitindo que você use arquivos e pastas em seu diretório de trabalho com
CÓPIA DE
instruções no seu Dockerfile.
Depois de criar sua imagem, você pode iniciar um contêiner usando
Docker Run.
:
Docker Run -D -P 8080: 80 My-website: v1
Estamos usando algumas bandeiras extras com
Docker Run.
aqui. o
-d.
A bandeira faz com que o Docker cli se separe do recipiente, permitindo que ele funcione em segundo plano. Um mapeamento portuário é definido com
-p.
, então Porta 8080 em seus mapas de host para a porta 80 no contêiner. Você deve ver sua página da web se você visitar
localhost: 8080.
no seu browser.
Imagens de encaixe são formadas por camadas. Cada instrução no seu DockerFile cria uma nova camada. Você pode usar recursos avançados para Referência múltipla imagens base , descartando as camadas intermediárias de imagens anteriores.
Registros de imagem.
Depois de ter uma imagem, você pode empurrá-lo para um registro. Registros fornecer armazenamento centralizado para que você possa compartilhar contêineres com os outros. O registro padrão é Cubo de Docker. .
Quando você executa um comando que referencia uma imagem, o Docker primeiro verifica se está disponível localmente. Se não for, tentará puxá-lo do hub de Docker. Você pode puxar manualmente imagens com o
Pulso de Docker.
comando:
Docker pull httpd: Últimas
Se você quiser publicar uma imagem, crie um
Cubo de Docker.
conta. Corre
Login de Docker.
e digite seu nome de usuário e senha.
Em seguida, marque sua imagem usando seu nome de usuário do Hub Docker:
Docker Tag My-image: Último Docker-Hub-Username / My-Image: Últimas
Agora, você pode empurrar sua imagem:
Docker Push Docker-Hub-Username / My-Image: Últimas
Outros usuários poderão puxar sua imagem e iniciar os recipientes com ele.
Você pode Execute seu próprio registro Se você precisar de armazenamento de imagem privada. Vários serviços de terceiros também oferecer registros de encaixe como alternativas ao Docker Hub.
Gerenciando seus contêineres
O Docker CLI possui vários comandos para permitir que você gerencie seus contêineres em execução. Aqui estão alguns dos mais úteis para saber:
Listando contêineres.
Docker PS.
Mostra todos os seus contêineres em execução. Adicionando o.
-uma
A bandeira mostrará contentores parados também.
Parando e começando recipientes
Para parar um contêiner, execute
Docker pare meu contêiner
. Substituir
meu contêiner
com o nome ou ID do contêiner. Você pode obter essas informações do
PS
comando. Um recipiente parado é reiniciado com
Docker iniciar meu contêiner
.
Os recipientes geralmente são executados desde que seu processo principal permaneça vivo.
Reiniciar políticas
Controle o que acontece quando um contêiner pára ou sua reinicialização do host. Passar
--Restart sempre.
para
Docker Run.
para fazer um reinício de contêiner imediatamente depois que ele pare.
Obtendo uma concha
Você pode
executar um comando em
um recipiente usando
Docker Exec My-Contenter My-Command
. Isso é útil quando você deseja invocar manualmente um executável que esteja separado para o processo principal do contêiner.
Adicione o
-isto
Bandeira Se você precisar de acesso interativo. Isso permite que você caia em uma concha correndo
Docker Exec -it my-contenter sh
.
Registros de monitoramento
O Docker coleta automaticamente a saída emitido para os fluxos de entrada padrão e saída de um contêiner. o
Docker registra meu contêiner
O comando mostrará os logs de um contêiner dentro do seu terminal. o
--Segue
A bandeira configura um fluxo contínuo para que você possa visualizar logs em tempo real.
Limpeza de recursos
Recipientes e imagens antigos podem rapidamente empilhar em seu sistema. Usar
Docker RM My-Recipiente
para excluir um contêiner por seu ID ou nome.
O comando para imagens é
Docker RMI My-Image: Últimas
. Passe o ID da imagem ou o nome da tag completo. Se você especificar uma tag, a imagem não será excluída até não ter mais tags atribuídas. Caso contrário, a tag dada será removida, mas as outras tags da imagem permanecerão utilizáveis.
Limpeza a granel são possíveis usando o
Docker Pune.
comando
. Isso lhe dá uma maneira fácil de remover todos os recipientes parados e imagens redundantes.
Gestão gráfica
Se o terminal não é sua coisa, você pode usar ferramentas de terceiros para Configure uma interface gráfica para o Docker . Painéis da Web permitem monitorar e gerenciar rapidamente sua instalação. Eles também ajudam você a tomar controle remoto de seus contêineres.
Armazenamento de dados persistentes
Recipientes de Docker são efêmeres por padrão. As alterações feitas no sistema de arquivos de um contêiner não persistirão depois que o contêiner parar. Não é seguro
Execute qualquer forma de sistema de armazenamento de arquivos
em um recipiente começou com um básico
Docker Run.
comando.
Existem algumas abordagens diferentes para Gerenciando dados persistentes . O mais comum é usar um volume de encaixe. Volumes são unidades de armazenamento que são montados em sistemas de arquivos de contêineres. Quaisquer dados em um volume permanecerão intactos após a parada de contêiner vinculados, permitindo que você conecte outro contêiner no futuro.
Mantendo a segurança
As cargas de trabalho encaixes podem ser mais seguras do que suas contrapartes de metais nus, já que o Docker fornece alguma separação entre o sistema operacional e seus serviços. No entanto, o Docker é uma questão de segurança potencial, uma vez que
normalmente é executado como
raiz
e poderia ser explorado para executar softwares maliciosos.
Se você estiver executando apenas o Docker como uma ferramenta de desenvolvimento, a instalação padrão é geralmente segura para usar. Servidores de produção e máquinas com um soquete de daemon exposto por rede devem ser endurecidos antes de você ir ao vivo.
Auditar sua instalação de Docker identificar possíveis problemas de segurança. Existem ferramentas automatizadas disponíveis Isso pode ajudá-lo a encontrar fraquezas e sugerir resoluções. Você também pode Digitalizar imagens de contêiner individuais para questões que poderiam ser exploradas de dentro.
Trabalhando com vários contêineres
o
Docker.
O comando só funciona com um contêiner de cada vez. Você provavelmente vai querer usar contêineres em agregado.
Docker Compose.
é uma ferramenta que permite definir seus contêineres declarativamente em um arquivo yaml. Você pode iniciá-los todos com um único comando.
Isso é útil quando seu projeto depende de outros serviços, como um back-end da Web que depende de um servidor de banco de dados. Você pode definir os dois recipientes no seu
Docker-Compose.yml.
e beneficiar de gerenciamento simplificado com
Rede automática
.
Aqui está um simples
Docker-Compose.yml.
Arquivo:
Versão: "3"
Serviços:
aplicativo:
Imagem: App-Server: Últimas
portas:
- 8000: 80
base de dados:
Imagem: servidor de banco de dados: Últimas
volumes:
- Dados de banco de dados: / dados
volumes:
Dados de banco de dados:
Isso define dois recipientes (
aplicativo
e
base de dados
). Um volume é criado para o banco de dados. Isso é montado para
/dados
no recipiente. A porta 80 do servidor de aplicativos é exposta como 8000 no host. Corre
Docker-Compose Up -d
para girar os dois serviços, incluindo a rede e o volume.
O uso de Docker Compose permite que você
Escreva reutilizável
Definições de contêineres que você pode compartilhar com outras pessoas. Você poderia cometer um
Docker-Compose.yml.
em seu controle de versão em vez de ter os desenvolvedores memorizar
Docker Run.
comandos.
Existem outras abordagens para executar vários contêineres. Aplicativo de Docker Is uma solução emergente que fornece outro nível de abstração. Em outras partes do ecossistema, Podman é uma alternativa de encaixe Isso permite criar "pods" de contêineres dentro do seu terminal.
Orquestração de contêiner
O Docker normalmente não é executado em produção. Agora é mais comum usar uma plataforma de orquestração, como Kubernetes. ou modo de enxame de encaixe. Essas ferramentas são projetadas para lidar com réplicas de contentores múltiplos, que melhora a escalabilidade e a confiabilidade.
O Docker é apenas um componente no movimento de contêinerização mais amplo. Orquestradores
Utilize o mesmo
Tecnologias de tempo de execução do contêiner para fornecer um ambiente que é melhor para a produção. Usando várias instâncias de contêiner
Permite atualizações de rolamento
Bem como distribuição em máquinas, tornando sua implantação mais resiliente para mudar e interrupções. O regular
Docker.
CLI tem como alvo um host e trabalha com contêineres individuais.
Uma plataforma poderosa para contêineres
O Docker oferece tudo o que você precisa para trabalhar com contêineres. Tornou-se uma ferramenta fundamental para o desenvolvimento de software e administração do sistema. Os principais benefícios são maior isolamento e portabilidade para serviços individuais.
Encontrar-se com o Docker requer uma compreensão dos conceitos básicos de contêiner e imagem. Você pode aplicá-los para criar suas imagens e ambientes especializados que contentam suas cargas de trabalho.