Docker - Guia rápido
Docker é um serviço de gerenciamento de contêineres. As palavras-chave do Docker sãodevelop, ship e runqualquer lugar. A ideia geral do Docker é que os desenvolvedores desenvolvam aplicativos facilmente, enviem-nos para contêineres que podem ser implantados em qualquer lugar.
O lançamento inicial do Docker foi em março de 2013 e, desde então, tornou-se a palavra da moda para o desenvolvimento do mundo moderno, especialmente em face de projetos baseados em Agile.
Recursos do Docker
O Docker tem a capacidade de reduzir o tamanho do desenvolvimento ao fornecer uma área de cobertura menor do sistema operacional por meio de contêineres.
Com os contêineres, torna-se mais fácil para as equipes em diferentes unidades, como desenvolvimento, controle de qualidade e operações trabalhar perfeitamente entre os aplicativos.
Você pode implantar contêineres Docker em qualquer lugar, em qualquer máquina física e virtual e até mesmo na nuvem.
Como os contêineres do Docker são bastante leves, eles são facilmente escalonáveis.
Componentes do Docker
Docker tem os seguintes componentes
Docker for Mac - Permite executar containers Docker no Mac OS.
Docker for Linux - Permite executar contêineres Docker no sistema operacional Linux.
Docker for Windows - Permite executar containers Docker no sistema operacional Windows.
Docker Engine - É usado para construir imagens Docker e criar contêineres Docker.
Docker Hub - Este é o registro usado para hospedar várias imagens Docker.
Docker Compose - Isso é usado para definir aplicativos usando vários contêineres Docker.
Discutiremos todos esses componentes em detalhes nos capítulos subsequentes.
O site oficial do Docker é https://www.docker.com/O site contém todas as informações e documentação sobre o software Docker. Ele também contém links para download de vários sistemas operacionais.
Para iniciar a instalação do Docker, vamos usar uma instância do Ubuntu. Você pode usar o Oracle Virtual Box para configurar uma instância virtual do Linux, caso ainda não o tenha.
A captura de tela a seguir mostra um servidor Ubuntu simples que foi instalado no Oracle Virtual Box. Há um usuário do sistema operacional chamadodemo que foi definido no sistema com acesso root completo ao servidor.
Para instalar o Docker, precisamos seguir as etapas fornecidas abaixo.
Step 1- Antes de instalar o Docker, primeiro você deve garantir que tem a versão correta do kernel Linux em execução. O Docker foi projetado para ser executado apenas no kernel Linux versão 3.8 e superior. Podemos fazer isso executando o seguinte comando.
uname
Este método retorna as informações do sistema sobre o sistema Linux.
Sintaxe
uname -a
Opções
a - Isso é usado para garantir que as informações do sistema sejam retornadas.
Valor de retorno
Este método retorna as seguintes informações no sistema Linux -
- nome do kernel
- nome do nó
- lançamento do kernel
- versão do kernel
- machine
- processor
- plataforma de hardware
- sistema operacional
Exemplo
uname –a
Resultado
Quando executamos o comando acima, obteremos o seguinte resultado -
Pela saída, podemos ver que a versão do kernel do Linux é 4.2.0-27, que é superior à versão 3.8, então estamos prontos para prosseguir.
Step 2 - Você precisa atualizar o sistema operacional com os pacotes mais recentes, o que pode ser feito por meio do seguinte comando -
apt-get
Este método instala pacotes da Internet no sistema Linux.
Sintaxe
sudo apt-get update
Opções
sudo - o sudo comando é usado para garantir que o comando seja executado com acesso root.
update - o update opção é usada para garantir que todos os pacotes sejam atualizados no sistema Linux.
Valor de retorno
Nenhum
Exemplo
sudo apt-get update
Resultado
Quando executamos o comando acima, obteremos o seguinte resultado -
Este comando se conectará à Internet e baixará os pacotes de sistema mais recentes para o Ubuntu.
Step 3- A próxima etapa é instalar os certificados necessários que serão exigidos para trabalhar com o site Docker mais tarde para baixar os pacotes Docker necessários. Isso pode ser feito com o seguinte comando.
sudo apt-get install apt-transport-https ca-certificates
Step 4- A próxima etapa é adicionar a nova chave GPG. Essa chave é necessária para garantir que todos os dados sejam criptografados ao baixar os pacotes necessários para o Docker.
O comando a seguir fará o download da chave com o ID 58118E89F3A912897C070ADBF76221572C52609D do keyserver hkp: //ha.pool.sks-keyservers.net: 80 e adiciona-o ao advchaveiro. Observe que esta chave específica é necessária para baixar os pacotes Docker necessários.
Step 5 - Em seguida, dependendo da versão do Ubuntu que você possui, será necessário adicionar o site relevante ao docker.list para o apt package manager, para que possa detectar os pacotes do Docker no site do Docker e baixá-los de acordo.
Preciso 12.04 (LTS) ─ deb https://apt.dockerproject.org/repoubuntu-preciso principal
Trusty 14.04 (LTS) ─ deb https://apt.dockerproject.org/repo/ ubuntu-trusty main
Wily 15.10 ─ deb https://apt.dockerproject.org/repo ubuntu-wily principal
Xenial 16.04 (LTS) - https://apt.dockerproject.org/repo ubuntu-xenial main
Como nosso sistema operacional é Ubuntu 14.04, usaremos o nome do repositório como “deb https://apt.dockerproject.org/repoubuntu-trusty main ”.
E então, precisaremos adicionar este repositório ao docker.list como acima mencionado.
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main”
| sudo tee /etc/apt/sources.list.d/docker.list
Step 6 - Em seguida, emitimos o apt-get update command para atualizar os pacotes no sistema Ubuntu.
Step 7 - Se você deseja verificar se o gerenciador de pacotes está apontando para o repositório correto, você pode fazer isso emitindo o apt-cache command.
apt-cache policy docker-engine
Na saída, você obterá o link para https://apt.dockerproject.org/repo/
Step 8 - Emita o apt-get update command para garantir que todos os pacotes no sistema local estejam atualizados.
Step 9 - Para Ubuntu Trusty, Wily e Xenial, temos que instalar os pacotes de kernel linux-image-extra- *, que permite usar o aufs storage driver. Este driver é usado pelas versões mais recentes do Docker.
Isso pode ser feito usando o seguinte comando.
sudo apt-get install linux-image-extra-$(uname -r)
linux-image-extra-virtual
Step 10 - A etapa final é instalar o Docker e podemos fazer isso com o seguinte comando -
sudo apt-get install –y docker-engine
Aqui, apt-get usa a opção de instalação para baixar a imagem do mecanismo do Docker do site do Docker e instalar o Docker.
O mecanismo Docker é o pacote oficial da Docker Corporation para sistemas baseados no Ubuntu.
Na próxima seção, veremos como verificar a versão do Docker que foi instalada.
Versão Docker
Para ver a versão do Docker em execução, você pode emitir o seguinte comando -
Sintaxe
docker version
Opções
version - É usado para garantir que o comando Docker retorne a versão do Docker instalada.
Valor de retorno
A saída fornecerá os vários detalhes da versão do Docker instalada no sistema.
Exemplo
sudo docker version
Resultado
Quando executamos o programa acima, obteremos o seguinte resultado -
Informações do Docker
Para ver mais informações sobre o Docker em execução no sistema, você pode emitir o seguinte comando -
Sintaxe
docker info
Opções
info - É usado para garantir que o comando Docker retorne as informações detalhadas sobre o serviço Docker instalado.
Valor de retorno
A saída fornecerá os vários detalhes do Docker instalado no sistema, como -
- Número de contêineres
- Número de imagens
- O driver de armazenamento usado pelo Docker
- O diretório raiz usado pelo Docker
- O driver de execução usado pelo Docker
Exemplo
sudo docker info
Resultado
Quando executamos o comando acima, obteremos o seguinte resultado -
Docker para Windows
O Docker tem suporte pronto para o Windows, mas você precisa ter a seguinte configuração para instalar o Docker para Windows.
Requisitos de sistema
SO Windows | Windows 10 64 bits |
Memória | 2 GB de RAM (recomendado) |
Você pode baixar o Docker para Windows em - https://docs.docker.com/docker-for-windows/
Docker ToolBox
O Docker ToolBox foi projetado para versões mais antigas do Windows, como Windows 8.1 e Windows 7. Você precisa ter a seguinte configuração para instalar o Docker para Windows.
Requisitos de sistema
SO Windows | Windows 7, 8, 8.1 |
Memória | 2 GB de RAM (recomendado) |
Virtualização | Isso deve ser ativado. |
Você pode baixar o Docker ToolBox em - https://www.docker.com/products/docker-toolbox
Vamos passar pela instalação de cada produto.
Docker para Windows
Depois de fazer o download do instalador, clique duas vezes nele para iniciar o instalador e siga as etapas abaixo.
Step 1 - Clique nos termos do Contrato e, em seguida, no botão Instalar para prosseguir com a instalação.
Step 2 - Depois de concluído, clique no botão Concluir para concluir a instalação.
Docker ToolBox
Depois de fazer o download do instalador, clique duas vezes nele para iniciar o instalador e siga as etapas abaixo.
Step 1 - Clique no botão Avançar na tela inicial.
Step 2 - Mantenha o local padrão na próxima tela e clique no botão Avançar.
Step 3 - Mantenha os componentes padrão e clique no botão Avançar para continuar.
Step 4 - Mantenha as tarefas adicionais como estão e clique no botão Avançar.
Step 5 - Na tela final, clique no botão Instalar.
Trabalhar com Docker Toolbox
Vamos agora ver como o Docker Toolbox pode ser usado para trabalhar com contêineres do Docker no Windows. A primeira etapa é iniciar o aplicativo Docker Toolbox para o qual o atalho é criado na área de trabalho quando a instalação da Docker Toolbox é realizada.
Em seguida, você verá a configuração sendo executada quando a caixa de ferramentas do Docker for iniciada.
Uma vez feito isso, você verá o Docker configurado e iniciado. Você obterá um shell interativo para Docker.
Para testar se o Docker funciona corretamente, podemos usar o Docker run command para baixar e executar um simples HelloWorld Docker container.
O funcionamento do Docker run command é dado abaixo -
docker run
Este comando é usado para executar um comando em um contêiner do Docker.
Sintaxe
docker run image
Opções
Image - Este é o nome da imagem que é usada para executar o contêiner.
Valor de retorno
A saída executará o comando no contêiner desejado.
Exemplo
sudo docker run hello-world
Este comando irá baixar o hello-world imagem, se ainda não estiver presente, e execute o hello-world como um contêiner.
Resultado
Quando executamos o comando acima, obteremos o seguinte resultado -
Se você deseja executar o Ubuntu OS no Windows, você pode baixar a imagem do Ubuntu usando o seguinte comando -
Docker run –it ubuntu bash
Aqui, você está dizendo ao Docker para executar o comando no modo interativo por meio do –it opção.
Na saída, você pode ver que a imagem do Ubuntu foi baixada e executada e, em seguida, você será logado como usuário root no contêiner do Ubuntu.
Docker Hub é um serviço de registro na nuvem que permite baixar imagens Docker que são construídas por outras comunidades. Você também pode fazer upload de suas próprias imagens construídas no Docker para o hub do Docker. Neste capítulo, veremos como fazer o download e usar a imagem do Jenkins Docker do hub do Docker.
O site oficial do hub Docker é - https://www.docker.com/community-edition#/add_ons
Step 1 - Primeiro você precisa fazer uma inscrição simples no hub Docker.
Step 2 - Depois de se inscrever, você será conectado ao Docker Hub.
Step 3 - A seguir, vamos navegar e encontrar a imagem do Jenkins.
Step 4 - Se você rolar para baixo na mesma página, pode ver o Docker pullcomando. Isso será usado para baixar a imagem Jenkins no servidor Ubuntu local.
Step 5 - Agora, vá para o servidor Ubuntu e execute o seguinte comando -
sudo docker pull jenkins
Para executar o Jenkins, você precisa executar o seguinte comando -
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
Observe os seguintes pontos sobre o acima sudo comando -
Estamos usando o sudo comando para garantir que ele seja executado com acesso root.
Aqui, jenkins é o nome da imagem que queremos baixar do hub Docker e instalar em nossa máquina Ubuntu.
-p é usado para mapear o número da porta da imagem interna do Docker para nosso servidor Ubuntu principal para que possamos acessar o contêiner de acordo.
Você terá então o Jenkins sendo executado com êxito como um contêiner na máquina Ubuntu.
No Docker, tudo é baseado em imagens. Uma imagem é uma combinação de um sistema de arquivos e parâmetros. Vamos dar um exemplo do seguinte comando no Docker.
docker run hello-world
O comando Docker é específico e informa ao programa Docker no sistema operacional que algo precisa ser feito.
o run comando é usado para mencionar que queremos criar uma instância de uma imagem, que é então chamada de container.
Finalmente, "hello-world" representa a imagem a partir da qual o contêiner é feito.
Agora vamos ver como podemos usar a imagem CentOS disponível no Docker Hub para executar CentOS em nossa máquina Ubuntu. Podemos fazer isso executando o seguinte comando em nossa máquina Ubuntu -
sudo docker run centos –it /bin/bash
Observe os seguintes pontos sobre o acima sudo comando -
Estamos usando o sudo comando para garantir que ele seja executado com root Acesso.
Aqui, centos é o nome da imagem que queremos baixar do Docker Hub e instalar em nossa máquina Ubuntu.
─it é usado para mencionar que queremos executar em interactive mode.
/bin/bash é usado para executar o shell bash quando o CentOS está instalado e funcionando.
Exibindo imagens do Docker
Para ver a lista de imagens Docker no sistema, você pode emitir o seguinte comando.
docker images
Este comando é usado para exibir todas as imagens atualmente instaladas no sistema.
Sintaxe
docker images
Opções
Nenhum
Valor de retorno
A saída fornecerá a lista de imagens no sistema.
Exemplo
sudo docker images
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Pela saída acima, você pode ver que o servidor tem três imagens: centos, newcentos, e jenkins. Cada imagem possui os seguintes atributos -
TAG - Isso é usado para marcar imagens logicamente.
Image ID - É usado para identificar a imagem de maneira exclusiva.
Created - O número de dias desde que a imagem foi criada.
Virtual Size - O tamanho da imagem.
Baixando imagens do Docker
As imagens podem ser baixadas do Docker Hub usando o Docker runcomando. Vamos ver em detalhes como podemos fazer isso.
Sintaxe
A sintaxe a seguir é usada para executar um comando em um contêiner do Docker.
docker run image
Opções
Image - Este é o nome da imagem que é usada para executar o contêiner.
Valor de retorno
A saída executará o comando no contêiner desejado.
Exemplo
sudo docker run centos
Este comando irá baixar o centos imagem, se ainda não estiver presente, e execute o sistema operacional como um contêiner.
Resultado
Quando executamos o comando acima, obteremos o seguinte resultado -
Agora você verá a imagem do CentOS Docker baixada. Agora, se executarmos o Dockerimages comando para ver a lista de imagens no sistema, devemos ser capazes de ver o centos imagem também.
Removendo imagens do Docker
As imagens do Docker no sistema podem ser removidas por meio do docker rmicomando. Vamos examinar esse comando com mais detalhes.
docker rmi
Este comando é usado para remover imagens Docker.
Sintaxe
docker rmi ImageID
Opções
ImageID - Este é o ID da imagem que precisa ser removida.
Valor de retorno
A saída fornecerá o ID da imagem da imagem excluída.
Exemplo
sudo docker rmi 7a86f8ffcb25
Aqui, 7a86f8ffcb25 é o ID da imagem do newcentos imagem.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Vamos ver mais alguns comandos do Docker nas imagens.
imagens do docker -q
Este comando é usado para retornar apenas os IDs das imagens das imagens.
Sintaxe
docker images
Opções
q - Diz ao comando Docker para retornar apenas os IDs da imagem.
Valor de retorno
A saída mostrará apenas os IDs de imagem das imagens no host Docker.
Exemplo
sudo docker images -q
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker inspect
Este comando é usado para ver os detalhes de uma imagem ou container.
Sintaxe
docker inspect Repository
Opções
Repository - Este é o nome da imagem.
Valor de retorno
A saída mostrará informações detalhadas na imagem.
Exemplo
sudo docker inspect jenkins
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Contêineres são instâncias de imagens Docker que podem ser executadas usando o comando Docker run. O objetivo básico do Docker é executar contêineres. Vamos discutir como trabalhar com contêineres.
Executando um contêiner
A execução de contêineres é gerenciada com o Docker runcomando. Para executar um contêiner em modo interativo, primeiro inicie o contêiner do Docker.
sudo docker run –it centos /bin/bash
Em seguida, pressione Crtl + p e você retornará ao shell do sistema operacional.
Em seguida, você estará executando na instância do sistema CentOS no servidor Ubuntu.
Listagem de contêineres
É possível listar todos os contêineres na máquina por meio do docker pscomando. Este comando é usado para retornar os contêineres em execução no momento.
docker ps
Sintaxe
docker ps
Opções
Nenhum
Valor de retorno
A saída mostrará os contêineres em execução no momento.
Exemplo
sudo docker ps
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Vamos ver mais algumas variações do docker ps comando.
docker ps -a
Este comando é usado para listar todos os contêineres no sistema
Sintaxe
docker ps -a
Opções
─a - Diz ao docker ps comando para listar todos os contêineres no sistema.
Valor de retorno
A saída mostrará todos os contêineres.
Exemplo
sudo docker ps -a
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
história do docker
Com este comando, você pode ver todos os comandos que foram executados com uma imagem por meio de um contêiner.
Sintaxe
docker history ImageID
Opções
ImageID - Este é o ID da imagem para o qual você deseja ver todos os comandos executados nele.
Valor de retorno
A saída mostrará todos os comandos executados nessa imagem.
Exemplo
sudo docker history centos
O comando acima irá mostrar todos os comandos que foram executados contra o centos imagem.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Neste capítulo, exploraremos em detalhes o que podemos fazer com contêineres.
docker top
Com este comando, você pode ver os principais processos em um contêiner.
Sintaxe
docker top ContainerID
Opções
ContainerID - Este é o ID do contêiner para o qual você deseja ver os principais processos.
Valor de retorno
A saída mostrará os processos de nível superior em um contêiner.
Exemplo
sudo docker top 9f215ed0b0d3
O comando acima mostrará os processos de nível superior em um contêiner.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
parada do dock
Este comando é usado para parar um contêiner em execução.
Sintaxe
docker stop ContainerID
Opções
ContainerID - Este é o ID do contêiner que precisa ser interrompido.
Valor de retorno
A saída fornecerá o ID do contêiner interrompido.
Exemplo
sudo docker stop 9f215ed0b0d3
O comando acima irá parar o contêiner do Docker 9f215ed0b0d3.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker rm
Este comando é usado para deletar um container.
Sintaxe
docker rm ContainerID
Opções
ContainerID - Este é o ID do contêiner que precisa ser removido.
Valor de retorno
A saída fornecerá o ID do contêiner removido.
Exemplo
sudo docker rm 9f215ed0b0d3
O comando acima removerá o contêiner do Docker 9f215ed0b0d3.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker stats
Este comando é usado para fornecer as estatísticas de um contêiner em execução.
Sintaxe
docker stats ContainerID
Opções
ContainerID - Este é o ID do contêiner para o qual as estatísticas precisam ser fornecidas.
Valor de retorno
A saída mostrará a utilização da CPU e da memória do contêiner.
Exemplo
sudo docker stats 9f215ed0b0d3
O comando acima fornecerá a utilização da CPU e da memória do contêiner 9f215ed0b0d3.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker attach
Este comando é usado para anexar a um contêiner em execução.
Sintaxe
docker attach ContainerID
Opções
ContainerID - Este é o ID do contêiner ao qual você precisa se conectar.
Valor de retorno
Nenhum
Exemplo
sudo docker attach 07b0b6f434fe
O comando acima será anexado ao contêiner do Docker 07b0b6f434fe.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Depois de anexar ao contêiner do Docker, você pode executar o comando acima para ver a utilização do processo nesse contêiner do Docker.
pausa docker
Este comando é usado para pausar os processos em um contêiner em execução.
Sintaxe
docker pause ContainerID
Opções
ContainerID - Este é o ID do Container para o qual você precisa pausar os processos no container.
Valor de retorno
O ContainerID do contêiner pausado.
Exemplo
sudo docker pause 07b0b6f434fe
O comando acima irá pausar os processos em um contêiner em execução 07b0b6f434fe.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker retomar
Este comando é usado para unpause os processos em um contêiner em execução.
Sintaxe
docker unpause ContainerID
Opções
ContainerID - Este é o ID do contêiner para o qual você precisa retomar os processos no contêiner.
Valor de retorno
O ContainerID do contêiner em execução.
Exemplo
sudo docker unpause 07b0b6f434fe
O comando acima irá retomar os processos em um contêiner em execução: 07b0b6f434fe
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
docker kill
Este comando é usado para encerrar os processos em um contêiner em execução.
Sintaxe
docker kill ContainerID
Opções
ContainerID - Este é o ID do contêiner para o qual você precisa eliminar os processos no contêiner.
Valor de retorno
O ContainerID do contêiner em execução.
Exemplo
sudo docker kill 07b0b6f434fe
O comando acima irá matar os processos no contêiner em execução 07b0b6f434fe.
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Docker - ciclo de vida do contêiner
A ilustração a seguir explica todo o ciclo de vida de um contêiner Docker.
Inicialmente, o contêiner do Docker estará no created Estado.
Em seguida, o contêiner do Docker entra no estado de execução quando o Docker run comando é usado.
The Docker kill comando é usado para matar um contêiner Docker existente.
The Docker pause comando é usado para pausar um contêiner Docker existente.
The Docker stop comando é usado para pausar um contêiner Docker existente.
The Docker run comando é usado para colocar um recipiente de volta de um stopped estado para um running Estado.
A imagem a seguir mostra a arquitetura padrão e tradicional de virtualization.
O servidor é o servidor físico usado para hospedar várias máquinas virtuais.
O sistema operacional host é a máquina base, como Linux ou Windows.
O Hypervisor é VMWare ou Windows Hyper V, usado para hospedar máquinas virtuais.
Em seguida, você instalaria vários sistemas operacionais como máquinas virtuais em cima do hipervisor existente como SO convidado.
Você então hospedaria seus aplicativos no topo de cada sistema operacional convidado.
A imagem a seguir mostra a nova geração de virtualização que é habilitada por meio de Dockers. Vamos dar uma olhada nas várias camadas.
O servidor é o servidor físico usado para hospedar várias máquinas virtuais. Portanto, esta camada permanece a mesma.
O sistema operacional host é a máquina base, como Linux ou Windows. Portanto, esta camada permanece a mesma.
Agora vem a nova geração que é o mecanismo Docker. Isso é usado para executar o sistema operacional que antes costumava ser máquinas virtuais como contêineres Docker.
Todos os aplicativos agora são executados como contêineres Docker.
A vantagem clara dessa arquitetura é que você não precisa ter hardware extra para o sistema operacional convidado. Tudo funciona como contêineres do Docker.
A vantagem do mecanismo Docker é que ele foi projetado para funcionar em vários sistemas operacionais. Já vimos a instalação no Windows e todos os comandos Docker nos sistemas Linux. Agora vamos ver os vários comandos do Docker no sistema operacional Windows.
Imagens Docker
Vamos executar o Docker images comando no host Windows.
A partir daqui, podemos ver que temos duas imagens - ubuntu e hello-world.
Executando um contêiner
Agora vamos executar um contêiner no host do Windows Docker.
Podemos ver que, ao executar o contêiner, agora podemos executar o contêiner do Ubuntu em um host Windows.
Listando todos os recipientes
Vamos listar todos os contêineres no host Windows.
Parando um contêiner
Vamos agora parar um contêiner em execução no host Windows.
Portanto, você pode ver que o mecanismo Docker é bastante consistente quando se trata de diferentes hosts Docker e funciona no Windows da mesma forma que funciona no Linux.
Neste capítulo, veremos as diferentes opções para configurar o Docker.
parada docker de serviço
Este comando é usado para parar o Docker daemon processo.
Sintaxe
service docker stop
Opções
Nenhum
Valor de retorno
Uma mensagem mostrando que o processo Docker foi interrompido.
Exemplo
sudo service docker stop
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
serviço docker start
Este comando é usado para iniciar o processo daemon do Docker.
Sintaxe
service docker start
Opções
Nenhum
Valor de retorno
Uma mensagem mostrando que o processo Docker foi iniciado.
Exemplo
sudo service docker start
Resultado
Quando executamos o comando acima, ele produzirá o seguinte resultado -
Por padrão, ao iniciar um contêiner, você também usará um shell commandao iniciar o contêiner, conforme mostrado abaixo. Isso é o que vimos nos capítulos anteriores, quando estávamos trabalhando com contêineres.
Na imagem acima, você pode observar que emitimos o seguinte comando -
sudo docker run –it centos /bin/bash
Usamos esse comando para criar um novo contêiner e, em seguida, usamos o comando Ctrl + P + Q para sair do contêiner. Isso garante que o contêiner ainda exista mesmo depois de sairmos dele.
Podemos verificar se o contêiner ainda existe com o Docker pscomando. Se tivéssemos que sair do contêiner diretamente, o próprio contêiner seria destruído.
Agora existe uma maneira mais fácil de anexar aos contêineres e sair deles de forma limpa, sem a necessidade de destruí-los. Uma maneira de conseguir isso é usando onsenter comando.
Antes de executarmos o nsenter comando, você precisa primeiro instalar o nsenterimagem. Isso pode ser feito usando o seguinte comando -
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
Antes de usarmos o nsenter , precisamos obter o ID do processo do contêiner, porque isso é exigido pelo nsentercomando. Podemos obter o ID do processo por meio do Dockerinspect command e filtrando-o através do Pid.
Como pode ser visto na imagem acima, primeiro usamos o docker pscomando para ver os contêineres em execução. Podemos ver que há um contêiner em execução com o ID ef42a4c5e663.
Em seguida, usamos o Docker inspect comando para inspecionar a configuração deste contêiner e, em seguida, use o grepcomando apenas para filtrar o ID do processo. E pela saída, podemos ver que o ID do processo é 2978.
Agora que temos o ID do processo, podemos prosseguir e usar o nsenter comando para anexar ao contêiner Docker.
nsenter
Este método permite anexar a um contêiner sem sair do contêiner.
Sintaxe
Comando nsenter –m –u –n –p –i –t containerID
Opções
-u é usado para mencionar o Uts namespace
-m é usado para mencionar o mount namespace
-n é usado para mencionar o network namespace
-p é usado para mencionar o process namespace
-i s para fazer o contêiner ser executado no modo interativo.
-t é usado para conectar os fluxos de E / S do contêiner ao sistema operacional host.
containerID - Este é o ID do contêiner.
Command - Este é o comando a ser executado dentro do contêiner.
Valor de retorno
Nenhum
Exemplo
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
Resultado
A partir da saída, podemos observar os seguintes pontos -
O prompt muda para o bash shell diretamente quando emitimos o nsenter comando.
Em seguida, emitimos o exitcomando. Agora, normalmente, se você não usou onsentercomando, o contêiner seria destruído. Mas você notaria que quando executamos onsenter comando, o contêiner ainda está instalado e funcionando.
Nos capítulos anteriores, vimos os vários arquivos de imagem, como Centos, que são baixados de Docker huba partir do qual você pode girar recipientes. Um exemplo é mostrado novamente abaixo.
Se usarmos o Docker imagescomando, podemos ver as imagens existentes em nosso sistema. Na captura de tela acima, podemos ver que existem duas imagens:centos e nsenter.
Mas o Docker também oferece a capacidade de criar suas próprias imagens Docker, e isso pode ser feito com a ajuda de Docker Files. Um Docker File é um arquivo de texto simples com instruções sobre como construir suas imagens.
As etapas a seguir explicam como você deve proceder para criar um arquivo Docker.
Step 1 - Crie um arquivo chamado Docker File e edite-o usando vim. Observe que o nome do arquivo deve ser "Dockerfile" com "D" maiúsculo.
Step 2 - Construa seu arquivo Docker usando as seguintes instruções.
#This is a sample Image
FROM ubuntu
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install –y nginx
CMD [“echo”,”Image created”]
Os seguintes pontos precisam ser observados sobre o arquivo acima -
A primeira linha "#Esta é uma imagem de amostra" é um comentário. Você pode adicionar comentários ao arquivo Docker com a ajuda do# comando
A próxima linha deve começar com o FROMpalavra-chave. Ele informa ao docker de qual imagem de base você deseja basear sua imagem. Em nosso exemplo, estamos criando uma imagem doubuntu imagem.
O próximo comando é a pessoa que vai manter essa imagem. Aqui você especifica oMAINTAINER palavra-chave e apenas mencionar o ID do e-mail.
o RUNcomando é usado para executar instruções na imagem. Em nosso caso, primeiro atualizamos nosso sistema Ubuntu e depois instalamos o servidor nginx em nossoubuntu imagem.
O último comando é usado para exibir uma mensagem ao usuário.
Step 3- Salve o arquivo. No próximo capítulo, discutiremos como construir a imagem.
Criamos nosso arquivo Docker no último capítulo. Agora é hora de construir o Docker File. O arquivo Docker pode ser criado com o seguinte comando -
docker build
Vamos aprender mais sobre este comando.
construção docker
Este método permite que os usuários construam suas próprias imagens Docker.
Sintaxe
docker build -t ImageName:TagName dir
Opções
-t - é mencionar uma tag para a imagem
ImageName - Este é o nome que você deseja dar à sua imagem.
TagName - Esta é a tag que você deseja dar à sua imagem.
Dir - O diretório onde o arquivo Docker está presente.
Valor de retorno
Nenhum
Exemplo
sudo docker build –t myimage:0.1.
Aqui, myimage é o nome que damos à Imagem e 0.1 é o número da etiqueta que damos à nossa imagem.
Como o Docker File está no diretório de trabalho atual, usamos "." no final do comando para indicar o diretório de trabalho atual.
Resultado
Na saída, você verá primeiro que a imagem do Ubuntu será baixada do Docker Hub, porque não há imagem disponível localmente na máquina.
Finalmente, quando a construção for concluída, todos os comandos necessários serão executados na imagem.
Você verá então a mensagem criada com sucesso e o ID da nova imagem. Quando você executa o Dockerimages command, você poderá ver sua nova imagem.
Agora você pode construir containers a partir de sua nova imagem.
Os repositórios públicos podem ser usados para hospedar imagens Docker que podem ser usadas por qualquer pessoa. Um exemplo são as imagens que estão disponíveis no Docker Hub. A maioria das imagens, como Centos, Ubuntu e Jenkins, estão disponíveis publicamente para todos. Também podemos disponibilizar nossas imagens publicando-as no repositório público no Docker Hub.
Para nosso exemplo, usaremos o myimagerepositório construído no capítulo "Construindo arquivos Docker" e carregue essa imagem no Docker Hub. Vamos primeiro revisar as imagens em nosso host Docker para ver o que podemos enviar para o registro Docker.
Aqui, nós temos nosso myimage:0.1imagem que foi criada como parte do capítulo “Construindo arquivos Docker”. Vamos usar isso para fazer upload para o repositório público do Docker.
As etapas a seguir explicam como você pode fazer upload de uma imagem para um repositório público.
Step 1- Faça login no Docker Hub e crie seu repositório. Este é o repositório onde sua imagem será armazenada. Vamos parahttps://hub.docker.com/ e faça login com suas credenciais.
Step 2 - Clique no botão "Criar Repositório" na tela acima e crie um repositório com o nome demorep. Certifique-se de que a visibilidade do repositório seja pública.
Assim que o repositório for criado, anote o pull comando que está anexado ao repositório.
o pull comando que será usado em nosso repositório é o seguinte -
docker pull demousr/demorep
Step 3- Agora volte para o Docker Host. Aqui, precisamos marcar nossomyimagepara o novo repositório criado no Docker Hub. Podemos fazer isso por meio do Dockertag command.
Vamos aprender mais sobre isso tag command mais tarde neste capítulo.
Step 4- Emita o comando de login do Docker para fazer login no repositório do Docker Hub a partir do prompt de comando. O comando de login do Docker solicitará o nome de usuário e a senha do repositório do Docker Hub.
Step 5- Uma vez que a imagem foi marcada, agora é hora de enviar a imagem para o repositório do Docker Hub. Podemos fazer isso por meio do Dockerpushcomando. Aprenderemos mais sobre esse comando posteriormente neste capítulo.
etiqueta docker
Este método permite marcar uma imagem para o repositório relevante.
Sintaxe
docker tag imageID Repositoryname
Opções
imageID - Este é o ImageID que precisa ser marcado para o repositório.
Repositoryname - Este é o nome do repositório para o qual o ImageID precisa ser marcado.
Valor de retorno
Nenhum
Exemplo
sudo docker tag ab0c1d3744dd demousr/demorep:1.0
Resultado
Um exemplo de saída do exemplo acima é fornecido abaixo.
docker push
Este método permite enviar imagens para o Docker Hub.
Sintaxe
docker push Repositoryname
Opções
Repositoryname - Este é o nome do repositório que precisa ser enviado ao Docker Hub.
Valor de retorno
O ID longo do repositório enviado ao Docker Hub.
Exemplo
sudo docker push demousr/demorep:1.0
Resultado
Se você voltar para a página do Docker Hub e ir para o seu repositório, verá o nome da tag no repositório.
Agora, vamos tentar extrair o repositório que carregamos em nosso host Docker. Vamos primeiro deletar as imagens,myimage:0.1 e demousr/demorep:1.0, do host Docker local. Vamos usar o Dockerpull command para extrair o repositório do Docker Hub.
Na captura de tela acima, você pode ver que o Docker pull comando pegou nosso novo repositório do Docker Hub e o colocou em nossa máquina.
No Docker, os próprios contêineres podem ter aplicativos em execução nas portas. Quando você executa um contêiner, se deseja acessar o aplicativo no contêiner por meio de um número de porta, é necessário mapear o número da porta do contêiner para o número da porta do host Docker. Vejamos um exemplo de como isso pode ser alcançado.
Em nosso exemplo, vamos baixar o contêiner Jenkins do Docker Hub. Em seguida, mapearemos o número da porta Jenkins para o número da porta no host Docker.
Step 1 - Primeiro, você precisa fazer uma inscrição simples no Docker Hub.
Step 2 - Depois de se inscrever, você será conectado ao Docker Hub.
Step 3 - A seguir, vamos navegar e encontrar a imagem do Jenkins.
Step 4 - Se você rolar para baixo na mesma página, pode ver o Docker pullcomando. Isso será usado para baixar a imagem Jenkins no servidor Ubuntu local.
Step 5 - Agora vá para o servidor Ubuntu e execute o comando -
sudo docker pull jenkins
Step 6 - Para entender quais portas são expostas pelo contêiner, você deve usar o Docker inspect command para inspecionar a imagem.
Agora vamos aprender mais sobre isso inspect comando.
docker inspect
Este método permite retornar informações de baixo nível sobre o contêiner ou imagem.
Sintaxe
docker inspect Container/Image
Opções
Container/Image - O contêiner ou imagem a inspecionar
Valor de retorno
As informações de baixo nível da imagem ou contêiner no formato JSON.
Exemplo
sudo docker inspect jenkins
Resultado
A saída do inspectcomando fornece uma saída JSON. Se observarmos a saída, podemos ver que há uma seção de "ExposedPorts" e ver que há duas portas mencionadas. Um é odata port de 8080 e o outro é o control port de 50000.
Para executar o Jenkins e mapear as portas, você precisa alterar o Docker runcomando e adicione a opção 'p' que especifica o mapeamento da porta. Então, você precisa executar o seguinte comando -
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
O lado esquerdo do mapeamento do número da porta é a porta do host Docker para mapear e o lado direito é o número da porta do contêiner Docker.
Ao abrir o navegador e navegar até o host Docker na porta 8080, você verá o Jenkins instalado e funcionando.
Pode ser necessário ter seus próprios repositórios privados. Você pode não querer hospedar os repositórios no Docker Hub. Para isso, existe um contêiner de repositório próprio do Docker. Vamos ver como podemos baixar e usar o contêiner para registro.
Step 1 - Use o Docker runcomando para baixar o registro privado. Isso pode ser feito usando o seguinte comando.
sudo docker run –d –p 5000:5000 –-name registry registry:2
Os seguintes pontos precisam ser observados sobre o comando acima -
Registry é o contêiner gerenciado pelo Docker que pode ser usado para hospedar repositórios privados.
O número da porta exposto pelo contêiner é 5000. Portanto, com o –p command, estamos mapeando o mesmo número de porta para o número de porta 5000 em nosso host local.
Estamos apenas marcando o contêiner de registro como “2”, para diferenciá-lo no host Docker.
o –dopção é usada para executar o contêiner no modo desanexado. Isso é para que o contêiner possa ser executado em segundo plano
Step 2 - Vamos fazer um docker ps para ver se o contêiner de registro está realmente em execução.
Confirmamos agora que o contêiner de registro está realmente em execução.
Step 3- Agora vamos marcar uma de nossas imagens existentes para que possamos colocá-la em nosso repositório local. Em nosso exemplo, uma vez que temos ocentos imagem disponível localmente, vamos marcá-la em nosso repositório privado e adicionar um nome de marca de centos.
sudo docker tag 67591570dd29 localhost:5000/centos
Os seguintes pontos precisam ser observados sobre o comando acima -
67591570dd29 refere-se ao ID da imagem para o centos imagem.
localhost:5000 é a localização do nosso repositório privado.
Estamos marcando o nome do repositório como centos em nosso repositório privado.
Step 4 - Agora vamos usar o Docker push comando para enviar o repositório ao nosso repositório privado.
sudo docker push localhost:5000/centos
Aqui, estamos empurrando o centos imagem para o repositório privado hospedado em localhost:5000.
Step 5 - Agora vamos deletar as imagens locais que temos para centos usando o docker rmicomandos. Podemos então fazer o download do necessáriocentos imagem do nosso repositório privado.
sudo docker rmi centos:latest
sudo docker rmi 67591570dd29
Step 6 - Agora que não temos nenhum centos imagens em nossa máquina local, agora podemos usar o seguinte Docker pull comando para puxar o centos imagem do nosso repositório privado.
sudo docker pull localhost:5000/centos
Aqui, estamos puxando o centos imagem para o repositório privado hospedado em localhost:5000.
Se agora você vê as imagens em seu sistema, verá o centos imagem também.
Já aprendemos como usar o Docker File para construir nossas próprias imagens personalizadas. Agora vamos ver como podemos construir uma imagem de servidor web que pode ser usada para construir contêineres.
Em nosso exemplo, vamos usar o Apache Web Server no Ubuntu para construir nossa imagem. Vamos seguir as etapas fornecidas abaixo, para construir nosso arquivo Docker do servidor da web.
Step 1- A primeira etapa é construir nosso arquivo Docker. Vamos usarvim e crie um arquivo Docker com as seguintes informações.
FROM ubuntu
RUN apt-get update
RUN apt-get install –y apache2
RUN apt-get install –y apache2-utils
RUN apt-get clean
EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]
Os seguintes pontos precisam ser observados sobre as declarações acima -
Estamos primeiro criando nossa imagem a partir da imagem base do Ubuntu.
A seguir, usaremos o comando RUN para atualizar todos os pacotes do sistema Ubuntu.
Em seguida, usamos o comando RUN para instalar o apache2 em nossa imagem.
Em seguida, usamos o comando RUN para instalar os pacotes do utilitário apache2 necessários em nossa imagem.
Em seguida, usamos o comando RUN para limpar todos os arquivos desnecessários do sistema.
O comando EXPOSE é usado para expor a porta 80 do Apache no contêiner para o host Docker.
Finalmente, o comando CMD é usado para executar o apache2 em segundo plano.
Agora que os detalhes do arquivo foram inseridos, apenas salve o arquivo.
Step 2 - Execute o Docker buildcomando para construir o arquivo Docker. Isso pode ser feito usando o seguinte comando -
sudo docker build –t=”mywebserver” .
Estamos marcando nossa imagem como mywebserver. Assim que a imagem for construída, você receberá uma mensagem de sucesso de que o arquivo foi criado.
Step 3- Agora que o arquivo do servidor da web foi criado, é hora de criar um contêiner a partir da imagem. Podemos fazer isso com o Dockerrun comando.
sudo docker run –d –p 80:80 mywebserver
Os seguintes pontos precisam ser observados sobre o comando acima -
O número da porta exposta pelo contêiner é 80. Portanto, com o –p , estamos mapeando o mesmo número de porta para o número de porta 80 em nosso host local.
o –dopção é usada para executar o contêiner no modo desanexado. Isso é para que o contêiner possa ser executado em segundo plano.
Se você for para a porta 80 do host Docker em seu navegador, verá que o Apache está instalado e funcionando.
O Docker tem uma série de comandos de instrução. Estes são comandos colocados no arquivo Docker. Vejamos os que estão disponíveis.
Instrução CMD
Este comando é usado para executar um comando em tempo de execução quando o contêiner é executado.
Sintaxe
CMD command param1
Opções
command - Este é o comando a ser executado quando o contêiner é iniciado.
param1 - Este é o parâmetro inserido no comando.
Valor de retorno
O comando será executado de acordo.
Exemplo
Em nosso exemplo, vamos inserir um simples Hello World echo em nosso Docker File, crie uma imagem e abra um contêiner a partir dela.
Step 1 - Crie o arquivo Docker com os seguintes comandos -
FROM ubuntu
MAINTAINER [email protected]
CMD [“echo” , “hello world”]
Aqui, o CMD é usado apenas para imprimir hello world.
Step 2 - Construir a imagem usando o Docker build comando.
Step 3 - Execute um contêiner a partir da imagem.
PONTO DE ENTRADA
Este comando também pode ser usado para executar comandos em tempo de execução para o contêiner. Mas podemos ser mais flexíveis com o comando ENTRYPOINT.
Sintaxe
ENTRYPOINT command param1
Opções
command - Este é o comando a ser executado quando o contêiner é iniciado.
param1 - Este é o parâmetro inserido no comando.
Valor de retorno
O comando será executado de acordo.
Exemplo
Vamos dar uma olhada em um exemplo para entender mais sobre ENTRYPOINT. Em nosso exemplo, vamos inserir um simplesecho em nosso Docker File, crie uma imagem e inicie um contêiner a partir dela.
Step 1 - Crie o arquivo Docker com os seguintes comandos -
FROM ubuntu
MAINTAINER [email protected]
ENTRYPOINT [“echo”]
Step 2 - Construir a imagem usando o Docker build comando.
Step 3 - Execute um contêiner a partir da imagem.
ENV
Este comando é usado para definir variáveis de ambiente no contêiner.
Sintaxe
ENV key value
Opções
Key - Esta é a chave para a variável de ambiente.
value - Este é o valor da variável de ambiente.
Valor de retorno
O comando será executado de acordo.
Exemplo
Em nosso exemplo, vamos inserir um simples echo em nosso Docker File, crie uma imagem e inicie um contêiner a partir dela.
Step 1 - Crie o arquivo Docker com os seguintes comandos -
FROM ubuntu
MAINTAINER [email protected]
ENV var1=Tutorial var2=point
Step 2 - Construir a imagem usando o Docker build comando.
Step 3 - Execute um contêiner a partir da imagem.
Step 4 - Finalmente, execute o env comando para ver as variáveis de ambiente.
WORKDIR
Este comando é usado para definir o diretório de trabalho do contêiner.
Sintaxe
WORKDIR dirname
Opções
dirname- O novo diretório de trabalho. Se o diretório não existir, ele será adicionado.
Valor de retorno
O comando será executado de acordo.
Exemplo
Em nosso exemplo, vamos inserir um simples echo em nosso Docker File, crie uma imagem e inicie um contêiner a partir dela.
Step 1 - Crie o arquivo Docker com os seguintes comandos -
FROM ubuntu
MAINTAINER [email protected]
WORKDIR /newtemp
CMD pwd
Step 2 - Construir a imagem usando o Docker build comando.
Step 3 - Execute um contêiner a partir da imagem.
A vinculação de contêineres permite que vários contêineres se vinculem. É uma opção melhor do que expor portas. Vamos passo a passo e aprendamos como funciona.
Step 1 - Baixe a imagem do Jenkins, se ainda não estiver presente, usando o Jenkins pull comando.
Step 2 - Assim que a imagem estiver disponível, execute o contêiner, mas, desta vez, você pode especificar um nome para o contêiner usando o –-nameopção. Este será nossosource container.
Step 3- Em seguida, é hora de lançar o container de destino, mas desta vez, iremos vinculá-lo ao nosso container de origem. Para nosso contêiner de destino, usaremos a imagem padrão do Ubuntu.
Quando você faz um docker ps, você verá os dois contêineres em execução.
Step 4 - Agora, anexe ao recipiente de recebimento.
Em seguida, execute o envcomando. Você notará novas variáveis para vincular ao contêiner de origem.
Drivers de armazenamento
O Docker tem vários drivers de armazenamento que permitem trabalhar com os dispositivos de armazenamento subjacentes. A tabela a seguir mostra os diferentes drivers de armazenamento junto com a tecnologia usada para os drivers de armazenamento.
Tecnologia | Driver de armazenamento |
---|---|
OverlayFS | overlay ou overlay2 |
AUFS | aufs |
Btrfs | brtfs |
Gerenciador de Dispositivos | gerenciador de Dispositivos |
VFS | vfs |
ZFS | zfs |
Vamos agora discutir alguns dos casos em que você usaria os vários drivers de armazenamento -
AUFS
Este é um driver estável; pode ser usado para aplicativos prontos para produção.
Ele tem bom uso de memória e é bom para garantir uma experiência do Docker suave para contêineres.
Há uma atividade de alta gravação associada a este driver que deve ser considerada.
É bom para sistemas que são do tipo Plataforma como serviço.
Devicemapper
Este é um driver estável; garante uma experiência suave do Docker.
Este driver é bom para testar aplicativos em laboratório.
Este driver está alinhado com a principal funcionalidade do kernel Linux.
Btrfs
Este driver está alinhado com a principal funcionalidade do kernel Linux.
Há uma atividade de alta gravação associada a este driver que deve ser considerada.
Este driver é bom para instâncias em que você mantém vários pools de construção.
Ovelay
Este é um driver estável e está alinhado com a principal funcionalidade do kernel Linux.
Ele tem um bom uso de memória.
Este driver é bom para testar aplicativos em laboratório.
ZFS
Este é um driver estável e é bom para testar aplicativos em laboratório.
É bom para sistemas que são do tipo plataforma como serviço.
Para ver o driver de armazenamento sendo usado, emita o docker info comando.
Sintaxe
docker info
Opções
Nenhum
Valor de retorno
O comando fornecerá todas as informações relativas ao componente Docker instalado no Docker Host.
Exemplo
sudo docker info
Resultado
A saída a seguir mostra que o principal driver usado é o aufs driver e que o diretório raiz está armazenado em /var/lib/docker/aufs.
Volumes de dados
No Docker, você tem um volume separado que pode ser compartilhado entre contêineres. Estes são conhecidos comodata volumes. Algumas das características do volume de dados são -
- Eles são inicializados quando o contêiner é criado.
- Eles podem ser compartilhados e também reutilizados entre muitos contêineres.
- Quaisquer alterações no próprio volume podem ser feitas diretamente.
- Eles existem mesmo depois que o contêiner é excluído.
Vejamos nosso contêiner Jenkins. Vamos fazer umdocker inspectpara ver os detalhes desta imagem. Podemos emitir o seguinte comando para escrever a saída dodocker inspect comando para um arquivo de texto e, em seguida, visualize o arquivo de acordo.
sudo docker inspect Jenkins > tmp.txt
Quando você visualiza o arquivo de texto usando o more command, você verá uma entrada como JENKINS_HOME=/var/Jenkins_home.
Esse é o mapeamento feito dentro do contêiner por meio da imagem do Jenkins.
Agora, suponha que você queira mapear o volume no contêiner para um volume local, então você precisa especificar a opção –v ao iniciar o contêiner. Um exemplo é mostrado abaixo -
sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
A opção –v é usada para mapear o volume no contêiner que é /var/jenkins_home para um local em nosso Docker Host que é /home/demo.
Agora, se você for ao /home/demo local em seu Docker Host após iniciar seu contêiner, você verá todos os arquivos de contêiner presentes lá.
Alteração do driver de armazenamento de um contêiner
Se quiser mudar para o driver de armazenamento usado para um contêiner, você pode fazer isso ao iniciar o contêiner. Isso pode ser feito usando o–volume-driver parâmetro ao usar o docker runcomando. Um exemplo é dado abaixo -
sudo docker run –d --volume-driver=flocker
–v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
o –volume-driver opção é usada para especificar outro driver de armazenamento para o contêiner.
Para confirmar que o driver foi alterado, primeiro vamos usar o docker pscomando para ver os contêineres em execução e obter o ID do contêiner. Então, emita o seguinte comando primeiro -
sudo docker ps
Em seguida, emita um docker inspect no contêiner e coloque a saída em um arquivo de texto usando o comando.
sudo docker inspect 9bffb1bfebee > temp.txt
Se você navegar pelo arquivo de texto e ir para a linha que diz VolumeDriver, você verá que o nome do driver foi alterado.
Criando um Volume
Um volume pode ser criado com antecedência usando o dockercomando. Vamos aprender mais sobre este comando.
Sintaxe
docker volume create –-name=volumename –-opt options
Opções
name - Este é o nome do volume que precisa ser criado.
opt - Estas são as opções que você pode fornecer ao criar o volume.
Valor de retorno
O comando produzirá o nome do volume criado.
Exemplo
sudo docker volume create –-name = demo –opt o = size = 100m
No comando acima, estamos criando um volume de tamanho 100 MB e com um nome demo.
Resultado
A saída do comando acima é mostrada abaixo -
Listando todos os volumes
Você também pode listar todos os docker volumes com um docker host. Mais detalhes sobre este comando são fornecidos abaixo -
Sintaxe
docker volume ls
Opções
Nenhum
Valor de retorno
O comando produzirá todos os volumes no docker host.
Exemplo
sudo docker volume ls
Resultado
A saída do comando acima é mostrada abaixo -
O Docker cuida dos aspectos de rede para que os contêineres possam se comunicar com outros contêineres e também com o Docker Host. Se você fizer umifconfigno Docker Host, você verá o adaptador Docker Ethernet. Este adaptador é criado quando o Docker é instalado no Docker Host.
Esta é uma ponte entre o Docker Host e o Linux Host. Agora, vamos examinar alguns comandos associados à rede no Docker.
Listando todas as redes Docker
Este comando pode ser usado para listar todas as redes associadas ao Docker no host.
Sintaxe
docker network ls
Opções
Nenhum
Valor de retorno
O comando produzirá todas as redes no Docker Host.
Exemplo
sudo docker network ls
Resultado
A saída do comando acima é mostrada abaixo
Inspecionando uma rede Docker
Se você quiser ver mais detalhes sobre a rede associada ao Docker, você pode usar o Docker network inspect comando.
Sintaxe
docker network inspect networkname
Opções
networkname - Este é o nome da rede que você precisa inspecionar.
Valor de retorno
O comando exibirá todos os detalhes sobre a rede.
Exemplo
sudo docker network inspect bridge
Resultado
A saída do comando acima é mostrada abaixo -
Agora vamos executar um contêiner e ver o que acontece quando inspecionamos a rede novamente. Vamos criar um contêiner Ubuntu com o seguinte comando -
sudo docker run –it ubuntu:latest /bin/bash
Agora, se inspecionarmos nosso nome de rede por meio do comando a seguir, você verá que o contêiner está conectado à ponte.
sudo docker network inspect bridge
Criando sua própria nova rede
Pode-se criar uma rede no Docker antes de lançar contêineres. Isso pode ser feito com o seguinte comando -
Sintaxe
docker network create –-driver drivername name
Opções
drivername - Este é o nome usado para o driver de rede.
name - Este é o nome dado à rede.
Valor de retorno
O comando produzirá o ID longo para a nova rede.
Exemplo
sudo docker network create –-driver bridge new_nw
Resultado
A saída do comando acima é mostrada abaixo -
Agora você pode conectar a nova rede ao iniciar o contêiner. Então, vamos criar um contêiner Ubuntu com o seguinte comando -
sudo docker run –it –network=new_nw ubuntu:latest /bin/bash
E agora, quando você inspecionar a rede por meio do comando a seguir, verá o contêiner conectado à rede.
sudo docker network inspect new_nw
Node.js é uma estrutura JavaScript usada para desenvolver aplicativos do lado do servidor. É uma estrutura de software livre desenvolvida para rodar em uma variedade de sistemas operacionais. Como o Node.js é uma estrutura popular para desenvolvimento, o Docker também garantiu que ele tenha suporte para aplicativos Node.js.
Veremos agora as várias etapas para colocar o contêiner Docker para Node.js em execução.
Step 1- A primeira etapa é extrair a imagem do Docker Hub. Ao fazer login no Docker Hub, você poderá pesquisar e ver a imagem do Node.js conforme mostrado abaixo. Basta digitar Nó na caixa de pesquisa e clicar no link do nó (oficial) que aparece nos resultados da pesquisa.
Step 2 - Você verá que o Docker pull comando para o nó nos detalhes do repositório no Docker Hub.
Step 3 - No Docker Host, use o Docker pull como mostrado acima para baixar a imagem de nó mais recente do Docker Hub.
Uma vez o pull estiver concluído, podemos prosseguir para a próxima etapa.
Step 4 - No Docker Host, vamos usar o vimeditor e crie um arquivo de exemplo Node.js. Neste arquivo, adicionaremos um comando simples para exibir “HelloWorld” no prompt de comando.
No arquivo Node.js, vamos adicionar a seguinte instrução -
Console.log(‘Hello World’);
Isso produzirá a frase “Hello World” quando a executarmos no Node.js.
Certifique-se de salvar o arquivo e prossiga para a próxima etapa.
Step 5 - Para executar nosso script Node.js usando o contêiner Node Docker, precisamos executar a seguinte instrução -
sudo docker run –it –rm –name = HelloWorld –v “$PWD”:/usr/src/app
–w /usr/src/app node node HelloWorld.js
Os seguintes pontos precisam ser observados sobre o comando acima -
o –rm opção é usada para remover o contêiner após sua execução.
Estamos dando um nome ao container chamado “HelloWorld”.
Estamos mencionando para mapear o volume no contêiner que é /usr/src/appao nosso diretório de trabalho atual. Isso é feito para que o contêiner de nó pegue nosso script HelloWorld.js que está presente em nosso diretório de trabalho no Docker Host.
o –w opção é usada para especificar o diretório de trabalho usado pelo Node.js.
A primeira opção de nó é usada para especificar a execução da imagem de nó.
A segunda opção de nó é usada para mencionar a execução do comando de nó no contêiner de nó.
E, finalmente, mencionamos o nome do nosso script.
Em seguida, obteremos a seguinte saída. E pela saída, podemos ver claramente que o contêiner Node foi executado como um contêiner e executou o script HelloWorld.js.
O MongoDB é um famoso banco de dados orientado a documentos que é usado por muitos aplicativos da web modernos. Como o MongoDB é um banco de dados popular para desenvolvimento, o Docker também garantiu que ele tenha suporte para MongoDB.
Agora veremos as várias etapas para colocar o contêiner Docker para MongoDB em funcionamento.
Step 1- A primeira etapa é extrair a imagem do Docker Hub. Ao fazer login no Docker Hub, você poderá pesquisar e ver a imagem do Mongo conforme mostrado abaixo. Basta digitar Mongo na caixa de pesquisa e clicar no link Mongo (oficial) que aparece nos resultados da pesquisa.
Step 2 - Você verá que o Docker pull comando para Mongo nos detalhes do repositório no Docker Hub.
Step 3 - No Docker Host, use o Docker pull como mostrado acima para baixar a imagem Mongo mais recente do Docker Hub.
Step 4- Agora que temos a imagem para o Mongo, vamos primeiro executar um contêiner MongoDB que será nossa instância para MongoDB. Para isso, emitiremos o seguinte comando -
sudo docker run -it -d mongo
Os seguintes pontos podem ser observados sobre o comando acima -
o –it opção é usada para executar o contêiner no modo interativo.
o –d opção é usada para executar o contêiner como um processo daemon.
E, finalmente, estamos criando um contêiner a partir da imagem Mongo.
Você pode então emitir o docker ps comando para ver os contêineres em execução -
Tome nota dos seguintes pontos -
O nome do container é tender_poitras. Esse nome será diferente, pois o nome dos contêineres fica mudando sempre que você ativa um contêiner. Mas apenas anote o contêiner que você lançou.
Em seguida, observe também o número da porta em que está sendo executado. Ele está escutando na porta TCP 27017.
Step 5- Agora vamos girar outro contêiner que atuará como nosso cliente, que será usado para se conectar ao banco de dados MongoDB. Vamos emitir o seguinte comando para isso -
sudo docker run –it –link=tender_poitras:mongo mongo /bin/bash
Os seguintes pontos podem ser observados sobre o comando acima -
o –it opção é usada para executar o contêiner no modo interativo.
Agora estamos vinculando nosso novo contêiner ao contêiner do servidor MongoDB já lançado. Aqui, você precisa mencionar o nome do contêiner já iniciado.
Em seguida, estamos especificando que queremos iniciar o contêiner Mongo como nosso cliente e, em seguida, executar o bin/bash shell em nosso novo contêiner.
Agora você estará no novo contêiner.
Step 6 - Execute o env no novo contêiner para ver os detalhes de como se conectar ao contêiner do servidor MongoDB.
Step 6- Agora é hora de se conectar ao servidor MongoDB a partir do contêiner do cliente. Podemos fazer isso por meio do seguinte comando -
mongo 172.17.0.2:27017
Os seguintes pontos precisam ser observados sobre o comando acima
o mongo comando é o cliente mongo comando que é usado para se conectar a um banco de dados MongoDB.
O IP e o número da porta são o que você obtém quando usa o env comando.
Depois de executar o comando, você será conectado ao banco de dados MongoDB.
Você pode então executar qualquer comando MongoDB no prompt de comando. Em nosso exemplo, estamos executando o seguinte comando -
use demo
Este comando é um comando MongoDB que é usado para mudar para um nome de banco de dados demo. Se o banco de dados não estiver disponível, ele será criado.
Agora você criou com êxito um contêiner MongoDB de cliente e servidor.
NGINX é um aplicativo da web leve e popular usado para desenvolver aplicativos do lado do servidor. É um servidor da Web de código aberto desenvolvido para funcionar em vários sistemas operacionais. Desde anginx é um servidor da web popular para desenvolvimento, o Docker garantiu que tem suporte para nginx.
Veremos agora as várias etapas para obter o contêiner do Docker para nginx funcionando.
Step 1- A primeira etapa é extrair a imagem do Docker Hub. Ao fazer login no Docker Hub, você poderá pesquisar e ver a imagem denginxcomo mostrado abaixo. Basta digitar nginx na caixa de pesquisa e clicar nonginx link (oficial) que aparece nos resultados da pesquisa.
Step 2 - Você verá que o Docker pull comando para nginx nos detalhes do repositório no Docker Hub.
Step 3 - No Docker Host, use o Docker pull como mostrado acima para baixar a imagem nginx mais recente do Docker Hub.
Step 4 - Agora vamos executar o nginx recipiente por meio do seguinte comando.
sudo docker run –p 8080:80 –d nginx
Estamos expondo a porta no nginx servidor que é a porta 80 para a porta 8080 no Docker Host.
Depois de executar o comando, você obterá a seguinte saída se navegar até o URL http://dockerhost:8080. Isso mostra que onginx o contêiner está instalado e funcionando.
Step 5 - Vejamos outro exemplo onde podemos hospedar uma página da web simples em nosso ngnixrecipiente. Em nosso exemplo, vamos criar um simplesHelloWorld.html arquivar e hospedá-lo em nosso nginx recipiente.
Vamos primeiro criar um arquivo HTML chamado HelloWorld.html
Vamos adicionar uma linha simples de Hello World no arquivo HTML.
Vamos então executar o seguinte comando do Docker.
sudo docker run –p 8080:80 –v
“$PWD”:/usr/share/nginx/html:ro –d nginx
Os seguintes pontos precisam ser observados sobre o comando acima -
Estamos expondo a porta no nginx servidor que é a porta 80 para a porta 8080 no Docker Host.
Em seguida, estamos anexando o volume ao contêiner que é /usr/share/nginx/htmlao nosso diretório de trabalho atual. É aqui que nosso arquivo HelloWorld.html é armazenado.
Agora, se navegarmos para o URL http://dockerhost:8080/HelloWorld.html obteremos a seguinte saída conforme o esperado -
Nos capítulos introdutórios, vimos a instalação da caixa de ferramentas Docker no Windows. A caixa de ferramentas do Docker foi desenvolvida para que os contêineres do Docker possam ser executados no Windows e MacOS. O site da caixa de ferramentas no Windows éhttps://docs.docker.com/docker-for-windows/
Para Windows, você precisa ter o Windows 10 ou Windows Server 2016 com Hyper-V habilitado.
A caixa de ferramentas consiste nos seguintes componentes -
Docker Engine - Isso é usado como o mecanismo base ou daemon Docker que é usado para executar contêineres Docker.
Docker Machine - para executar comandos da máquina Docker.
Docker Compose para executar comandos de composição do Docker.
Kinematic - Esta é a GUI do Docker construída para Windows e Mac OS.
Oracle virtualbox
Vamos agora discutir os diferentes tipos de atividades que são possíveis com a caixa de ferramentas do Docker.
Executando no Powershell
Com a caixa de ferramentas do Docker no Windows 10, agora você pode executar comandos do Docker fora powershell. Se você abrir o PowerShell no Windows e digitar o comando da versão do Docker, você obterá todos os detalhes necessários sobre a versão do Docker instalada.
Puxando imagens e executando contêineres
Agora você também pode extrair imagens do Docker Hub e executar contêineres no powershell como faria no Linux. O exemplo a seguir mostrará resumidamente o download da imagem do Ubuntu e a execução do contêiner a partir da imagem.
A primeira etapa é usar o Docker pull comando para extrair a imagem do Ubuntu do Docker Hub.
A próxima etapa é executar a imagem Docker usando o seguinte run comando -
docker run –it ubuntu /bin/bash
Você notará que o comando é igual ao do Linux.
Kitematic
Este é o equivalente GUI do Docker no Windows. Para abrir esta GUI, vá para a barra de tarefas e no ícone do Docker, clique com o botão direito e escolha abrir o Kitematic.
Ele solicitará que você baixe a GUI do Kitematic. Depois de baixado, basta descompactar o conteúdo. Haverá um arquivo chamadoKitematic.exe. Clique duas vezes neste arquivo exe para abrir a interface GUI.
Em seguida, será solicitado que você faça o login no Docker Hub, entre através da GUI. Basta inserir o nome de usuário e a senha exigidos e clicar no botão Login.
Uma vez logado, você poderá ver todas as imagens baixadas no sistema no lado esquerdo da interface.
No lado direito, você encontrará todas as imagens disponíveis no Docker Hub.
Vamos dar um exemplo para entender como baixar a imagem do Node do Docker Hub usando o Kitematic.
Step 1 - Insira a palavra-chave do nó nos critérios de pesquisa.
Step 2 - Clique no createbotão na imagem oficial do Node. Você verá então a imagem sendo baixada.
Assim que a imagem for baixada, ela começará a executar o contêiner do Node.
Step 3 - Se você for ao settings guia, você pode pesquisar mais opções de configurações, conforme mostrado abaixo.
General settings - Nesta guia, você pode nomear o container, alterar as configurações do caminho e excluir o container.
Ports- Aqui você pode ver os diferentes mapeamentos de portas. Se desejar, você pode criar seus próprios mapeamentos de porta.
Volumes - Aqui você pode ver os diferentes mapeamentos de volume.
Advanced - Contém as configurações avançadas do contêiner.
ASP.Net é a estrutura de desenvolvimento da Web padrão fornecida pela Microsoft para o desenvolvimento de aplicativos do lado do servidor. Como o ASP.Net já existe há muito tempo para desenvolvimento, o Docker garantiu que ele tenha suporte para ASP.Net.
Neste capítulo, veremos as várias etapas para colocar o contêiner Docker para ASP.Net em funcionamento.
Pré-requisitos
As etapas a seguir precisam ser realizadas primeiro para executar o ASP.Net.
Step 1 - Como ele só pode ser executado em sistemas Windows, primeiro você precisa garantir que possui o Windows 10 ou o Windows Server 2016.
Step 2- Em seguida, certifique-se de que o Hyper-V e os Containers estejam instalados no sistema Windows. Para instalar o Hyper – V e os contêineres, você pode ir para ATIVAR ou DESATIVAR recursos do Windows. Em seguida, verifique se a opção Hyper-V e os Containers estão marcados e clique no botão OK.
O sistema pode exigir uma reinicialização após esta operação.
Step 3 - Em seguida, você precisa usar o seguinte comando Powershell para instalar o 1.13.0rc4versão do Docker. O comando a seguir fará o download e o armazenará no local temporário.
Invoke-WebRequest "https://test.docker.com/builds/Windows/x86_64/docker-1.13.0-
rc4.zip" -OutFile "$env:TEMP\docker-1.13.0-rc4.zip" –UseBasicParsing
Step 4 - Em seguida, você precisa expandir o arquivo usando o seguinte powershell comando.
Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles
Step 5 - Em seguida, você precisa adicionar os arquivos Docker à variável de ambiente usando o seguinte powershell comando.
$env:path += ";$env:ProgramFiles\Docker"
Step 6 - Em seguida, você precisa registrar o Docker Daemon Service usando o seguinte powershell comando.
dockerd --register-service
Step 7 - Finalmente, você pode iniciar o docker daemon usando o seguinte comando.
Start-Service Docker
Use o docker version comando em powershell para verificar se o docker daemon está funcionando
Instalando o recipiente ASP.Net
Vamos ver como instalar o contêiner ASP.Net.
Step 1- A primeira etapa é extrair a imagem do Docker Hub. Ao fazer login no Docker Hub, você poderá pesquisar e ver a imagem deMicrosoft/aspnetcomo mostrado abaixo. Basta digitarasp na caixa de pesquisa e clique no link Microsoft / aspnet que aparece nos resultados da pesquisa.
Step 2 - Você verá que o Docker pull comando para ASP.Net nos detalhes do repositório no Docker Hub.
Step 3 - Vá para Docker Host e execute o Docker pullcomando para a imagem microsoft / aspnet. Observe que a imagem é muito grande, perto de 4,2 GB.
Step 4 - Agora vá para o seguinte local https://github.com/Microsoft/aspnet-docker e baixe todo o repositório Git.
Step 5 - Crie uma pasta chamada Appem sua unidade C. Em seguida, copie o conteúdo do4.6.2/samplepasta para a sua unidade C. Acesse o Docker File no diretório de amostra e emita o seguinte comando -
docker build –t aspnet-site-new –build-arg site_root=/
Os seguintes pontos precisam ser observados sobre o comando acima -
- Ele constrói uma nova imagem chamada aspnet-site-new do arquivo Docker.
- O caminho raiz é definido para a pasta localpath.
Step 6- Agora é hora de executar o contêiner. Isso pode ser feito usando o seguinte comando -
docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new
Step 7- Agora você terá o IIS em execução no contêiner do Docker. Para encontrar o endereço IP do contêiner Docker, você pode emitir o Dockerinspect comando como mostrado abaixo.
O Docker Cloud é um serviço fornecido pelo Docker no qual você pode realizar as seguintes operações -
Nodes - Você pode conectar o Docker Cloud aos seus provedores de nuvem existentes, como Azure e AWS para ativar contêineres nesses ambientes.
Cloud Repository - Fornece um local onde você pode armazenar seus próprios repositórios.
Continuous Integration - Conecte-se com Github e construir um pipeline de integração contínua.
Application Deployment - Implantar e dimensionar infraestrutura e contêineres.
Continuous Deployment - Pode automatizar implantações.
Começando
Você pode acessar o seguinte link para começar a usar o Docker Cloud - https://cloud.docker.com/
Uma vez conectado, você receberá a seguinte interface básica -
Conectando-se ao provedor de nuvem
A primeira etapa é conectar-se a um provedor de nuvem existente. As etapas a seguir mostrarão como se conectar a um provedor Amazon Cloud.
Step 1- A primeira etapa é garantir que você tenha as chaves AWS corretas. Isso pode ser retirado doawsconsole. Faça login no seuaws conta usando o seguinte link -
Step 2- Uma vez conectado, vá para a seção Credenciais de segurança. Anote as chaves de acesso que serão usadas no Docker Hub.
Step 3 - Em seguida, você precisa criar uma política em awsque permitirá que o Docker visualize as instâncias do EC2. Vá para a seção de perfis emaws. Clique noCreate Policy botão.
Step 4 - Clique em 'Criar sua própria política' e dê o nome da política como dockercloudpolicy e a definição da política conforme mostrado abaixo.
{
"Version": "2012-10-17",
"Statement": [ {
"Action": [
"ec2:*",
"iam:ListInstanceProfiles"
],
"Effect": "Allow",
"Resource": "*"
} ]
}
Em seguida, clique no Create Policy botão
Step 5 - Em seguida, você precisa criar um roleque será usado pelo Docker para ativar nós na AWS. Para isso, vá para oRoles seção na AWS e clique no Create New Role opção.
Step 6 - Dê o nome da função como dockercloud-role.
Step 7 - Na próxima tela, vá para 'Função para acesso entre contas' e selecione “Fornecer acesso entre sua conta e uma conta AWS de terceiros".
Step 8 - Na próxima tela, insira os seguintes detalhes -
- No campo ID da conta, insira o ID do serviço Docker Cloud: 689684103426.
- No campo ID externo, digite seu nome de usuário do Docker Cloud.
Step 9 - Em seguida, clique no Next Step e na próxima tela, anexe a política que foi criada na etapa anterior.
Step 10 - Finalmente, na última tela quando a função é criada, certifique-se de copiar o arn função que é criada.
arn:aws:iam::085363624145:role/dockercloud-role
Step 11 - Agora volte para Docker Cloud, selecione Cloud Providerse clique no plug symbol ao lado de Amazon Web Services.
Introduzir o arn função e clique no Save botão.
Depois de salvo, a integração com a AWS seria concluída.
Configurando Nós
Assim que a integração com a AWS for concluída, a próxima etapa é configurar um nó. Vá para a seção Nodes no Docker Cloud. Observe que a configuração dos nós configurará automaticamente um cluster de nós primeiro.
Step 1 - Vá para a seção Nodes no Docker Cloud.
Step 2 - Em seguida, você pode fornecer os detalhes dos nós que serão configurados no AWS.
Você pode clicar no cluster Launch Node que estará presente na parte inferior da tela. Depois que o nó for implantado, você receberá a notificação na tela Node Cluster.
Implantando um serviço
A próxima etapa após implantar um nó é implantar um serviço. Para fazer isso, precisamos realizar as seguintes etapas.
Step 1 - Vá para o Services Sectionno Docker Cloud. Clique noCreate botão
Step 2- Escolha o serviço que é necessário. No nosso caso, vamos escolhermongo.
Step 3 - Na próxima tela, escolha o Create & Deployopção. Isso vai começar a implantar oMongo contêiner em seu cluster de nó.
Depois de implantado, você poderá ver o contêiner em estado de execução.
O Docker possui mecanismos de registro que podem ser usados para depurar problemas conforme e quando eles ocorrem. Há registro nodaemon level e no container level. Vejamos os diferentes níveis de registro.
Daemon Logging
No nível de log daemon, existem quatro níveis de log disponíveis -
Debug - Detalha todas as informações possíveis tratadas pelo processo daemon.
Info - Detalha todos os erros + Informação tratada pelo processo daemon.
Errors - Ele detalha todos os erros tratados pelo processo daemon.
Fatal - Ele apenas detalha todos os erros fatais tratados pelo processo daemon.
Siga as etapas a seguir para aprender como habilitar o registro.
Step 1 - Primeiro, precisamos parar o docker daemon process, se já estiver em execução. Isso pode ser feito usando o seguinte comando -
sudo service docker stop
Step 2 - Agora precisamos iniciar o docker daemon process. Mas desta vez, precisamos acrescentar o–lparâmetro para especificar a opção de registro. Então, vamos emitir o seguinte comando ao iniciar odocker daemon process.
sudo dockerd –l debug &
Os seguintes pontos precisam ser observados sobre o comando acima -
dockerd é o executável para o docker daemon process.
o –lopção é usada para especificar o nível de registro. Em nosso caso, estamos colocando isso como depuração
& é usado para voltar ao prompt de comando após o registro ter sido habilitado.
Depois de iniciar o processo Docker com registro, você também verá agora o Debug Logs sendo enviado para o console.
Agora, se você executar qualquer comando do Docker, como docker images, as informações de depuração também serão enviadas para o console.
Log de contêineres
O registro também está disponível no nível do contêiner. Portanto, em nosso exemplo, vamos ativar um contêiner do Ubuntu primeiro. Podemos fazer isso usando o seguinte comando.
sudo docker run –it ubuntu /bin/bash
Agora, podemos usar o docker log command para ver os logs do contêiner.
Sintaxe
Docker logs containerID
Parâmetros
containerID - Este é o ID do contêiner para o qual você precisa ver os logs.
Exemplo
Em nosso Docker Host, vamos emitir o seguinte comando. Antes disso, você pode emitir alguns comandos enquanto estiver no contêiner.
sudo docker logs 6bfb1271fcdd
Resultado
Na saída, você pode ver que os comandos executados no contêiner são mostrados nos logs.
Docker Composeé usado para executar vários contêineres como um único serviço. Por exemplo, suponha que você tenha um aplicativo que requer NGNIX e MySQL, você poderia criar um arquivo que iniciaria os dois contêineres como um serviço sem a necessidade de iniciar cada um separadamente.
Neste capítulo, veremos como começar a usar o Docker Compose. Em seguida, veremos como obter um serviço simples com MySQL e NGNIX instalado e funcionando usando o Docker Compose.
Docker Compose ─ Instalação
As etapas a seguir precisam ser seguidas para colocar o Docker Compose em funcionamento.
Step 1 - Baixe os arquivos necessários de github usando o seguinte comando -
curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose
-$(uname -s) -$(uname -m)" -o /home/demo/docker-compose
O comando acima irá baixar a versão mais recente do Docker Compose que, no momento em que este artigo foi escrito, é 1.10.0-rc2. Ele então o armazenará no diretório/home/demo/.
Step 2 - Em seguida, precisamos fornecer execute privileges para o arquivo Docker Compose baixado, usando o seguinte comando -
chmod +x /home/demo/docker-compose
Podemos então usar o seguinte comando para ver o compose versão.
Sintaxe
docker-compose version
Parâmetros
version - Isso é usado para especificar que queremos os detalhes da versão do Docker Compose.
Resultado
Os detalhes da versão do Docker Compose serão exibidos.
Exemplo
O exemplo a seguir mostra como obter o docker-compose versão.
sudo ./docker-compose -version
Resultado
Você obterá a seguinte saída -
Criando seu primeiro arquivo Docker-Compose
Agora vamos criar nosso primeiro arquivo Docker Compose. Todos os arquivos Docker Compose são arquivos YAML. Você pode criar um usando o editor vim. Portanto, execute o seguinte comando para criar ocompose arquivo -
sudo vim docker-compose.yml
Vamos dar uma olhada nos vários detalhes deste arquivo -
o database e webpalavras-chave são usadas para definir dois serviços separados. Um estará executando nossomysql banco de dados e o outro será nosso nginx servidor web.
o image palavra-chave é usada para especificar a imagem de dockerhub para nós mysql e nginx recipientes
Para o banco de dados, estamos usando a palavra-chave portas para mencionar as portas que precisam ser expostas para mysql.
E então, também especificamos as variáveis de ambiente para mysql que são necessários para executar mysql.
Agora vamos executar nosso arquivo Docker Compose usando o seguinte comando -
sudo ./docker-compose up
Este comando levará o docker-compose.yml arquivo em seu diretório local e comece a construir os contêineres.
Depois de executadas, todas as imagens começarão a ser baixadas e os containers serão iniciados automaticamente.
E quando você faz um docker ps, você pode ver que os contêineres estão realmente ativos e em execução.
O Docker tem integrações com muitas ferramentas de integração contínua, que também inclui a popular ferramenta de CI conhecida como Jenkins. No Jenkins, você tem plug-ins disponíveis que podem ser usados para trabalhar com contêineres. Portanto, vamos examinar rapidamente um plug-in Docker disponível para a ferramenta Jenkins.
Vamos passo a passo e ver o que está disponível nos contêineres Jenkins para Docker.
Step 1 - Vá para o painel do Jenkins e clique em Manage Jenkins.
Step 2 - Vá para Manage Plugins.
Step 3- Procure por plug-ins do Docker. Escolha o plugin do Docker e clique noInstall without restart botão.
Step 4- Assim que a instalação for concluída, vá para o seu trabalho no painel do Jenkins. Em nosso exemplo, temos um trabalho chamadoDemo.
Step 5 - No trabalho, quando você vai para a etapa Compilar, agora você pode ver a opção de iniciar e parar contêineres.
Step 6- Como um exemplo simples, você pode escolher a outra opção para interromper os contêineres quando a compilação for concluída. Em seguida, clique noSave botão.
Agora, apenas execute seu trabalho no Jenkins. Na saída do console, agora você poderá ver que o comando para parar todos os contêineres foi executado.
Kubernetes é uma estrutura de orquestração para contêineres do Docker que ajuda a expor contêineres como serviços para o mundo externo. Por exemplo, você pode ter dois serviços - um serviço conterianginx e mongoDB, e outro serviço conteria nginx e redis. Cada serviço pode ter um IP ou ponto de serviço que pode ser conectado por outros aplicativos. O Kubernetes é então usado para gerenciar esses serviços.
O diagrama a seguir mostra em um formato simplista como o Kubernetes funciona do ponto de vista da arquitetura.
o minioné o nó no qual todos os serviços são executados. Você pode ter muitos lacaios em execução em um determinado momento. Cada lacaio hospedará um ou mais POD. CadaPODé como hospedar um serviço. Cada POD contém os contêineres do Docker. Cada POD pode hospedar um conjunto diferente de contêineres Docker. O proxy é então usado para controlar a exposição desses serviços ao mundo externo.
O Kubernetes tem vários componentes em sua arquitetura. A função de cada componente é explicada abaixo & mius;
etcd - Este componente é altamente disponível key-value loja que é usada para armazenar shared configuration e service discovery. Aqui, os vários aplicativos serão capazes de se conectar aos serviços através dodiscovery service.
Flannel - Esta é uma rede de back-end necessária para os contêineres.
kube-apiserver - Esta é uma API que pode ser usada para orquestrar os contêineres do Docker.
kube-controller-manager - Isso é usado para controlar o Kubernetes services.
kube-scheduler - Isso é usado para agendar os contêineres nos hosts.
Kubelet - É usado para controlar o lançamento de contêineres via manifest files.
kube-proxy - Isso é usado para fornecer serviços de proxy de rede para o mundo externo.
Neste capítulo, veremos como instalar Kubenetes através da kubeadm. Esta é uma ferramenta que auxilia na instalação do Kubernetes. Vamos passo a passo e aprenderemos como instalar o Kubernetes.
Step 1 - Certifique-se de que o Ubuntu server version você está trabalhando é 16.04.
Step 2 - Certifique-se de gerar um ssh chave que pode ser usada para sshConecte-se. Você pode fazer isso usando o seguinte comando.
ssh-keygen
Isso irá gerar uma chave em seu home folder como mostrado abaixo.
Step 3 - Em seguida, dependendo da versão do Ubuntu que você possui, será necessário adicionar o site relevante ao docker.list para o apt package manager, para que seja capaz de detectar o Kubernetes packages de kubernetes site e baixe-os de acordo.
Podemos fazer isso usando os seguintes comandos.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/docker.list
Step 4 - Em seguida, emitimos um apt-get update para garantir que todos os pacotes sejam baixados no servidor Ubuntu.
Step 5 - Instale o pacote Docker conforme detalhado nos capítulos anteriores.
Step 6 - Agora é hora de instalar kubernetes instalando os seguintes pacotes -
apt-get install –y kubelet kubeadm kubectl kubernetes-cni
Step 7 - Uma vez kubernetes pacotes são baixados, é hora de iniciar o controlador do kubernetes usando o seguinte comando -
kubeadm init
Uma vez feito isso, você receberá uma mensagem de sucesso de que o mestre está instalado e funcionando e os nós agora podem ingressar no cluster.