[Compartilhamento de experiência] Descrição do método de implantação do contêiner Docker

Prefácio

Este caso se aplica ao ambiente de desenvolvimento:

Ambiente de desenvolvimento do Windows: Windows 7 64 bits, Windows 10 64 bits

Ambiente de desenvolvimento Linux: Ubuntu 18.04.4 64 bits

Máquina virtual: VMware15.1.0

O Docker é um mecanismo de contêiner de aplicativo de código aberto que permite aos desenvolvedores empacotar seus aplicativos e dependências em uma imagem portátil e, em seguida, publicá-lo em qualquer máquina Linux ou Windows popular e também realizar a virtualização. Os contêineres usam um mecanismo de sandbox completamente e não haverá interfaces entre eles. Com o Docker, a infraestrutura pode ser gerenciada como um aplicativo. Reduza significativamente o tempo de desenvolvimento do produto aproveitando o método do Docker de liberar, testar e implantar código rapidamente.

1 Arquitetura Docker

O Docker usa uma arquitetura cliente-servidor (C/S). O cliente Docker se comunica com o daemon Docker, que faz o trabalho pesado de construção, execução e distribuição de contêineres Docker. O cliente Docker e o daemon podem ser executados no mesmo sistema ou você pode conectar o cliente Docker a um daemon Docker remoto. O cliente Docker e o daemon se comunicam usando API REST, soquete UNIX ou interface de rede.

figura 1

2 Instalação do Docker

2.1 Método de instalação

(1) Instalar pacotes dependentes

Abra o Ubuntu, verifique se o Ubuntu pode acessar a Internet normalmente e execute o seguinte comando para instalar o pacote de dependência do Docker.

Host#     sudo apt-get update

Figura 2

Host#     sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

 

imagem 3

(2) Adicionar chave GPG oficial do Docker

Host#     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Figura 4

(3) Configure o repositório Docker Stable

Host#     echo "deb [arch=amd64 assinado por=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Figura 5

(4) Instale o Docker

Host#     sudo apt-get update

Host#     sudo apt-get install docker-ce

Figura 6

Figura 7

(5) Verifique o Docker

Execute o seguinte comando para verificar se a instalação foi bem-sucedida executando a imagem hello-world que acompanha o Docker. Após a execução do programa, se a saída for a seguinte, isso significa que a instalação do Docker foi bem-sucedida.

Host#     sudo docker run hello-world

Figura 8

2.2 Construir um armazém espelho local

O Docker usa o Registry para armazenar imagens criadas pelos usuários. Registro é dividido em público e privado dois. O registro público operado pelo Docker é chamado de Docker Hub, onde os usuários podem registrar uma conta, compartilhar e salvar suas próprias imagens. O warehouse de imagens públicas do Docker fornece uma enorme coleção de imagens para uso dos usuários. Um Docker Registry pode conter vários warehouses, cada warehouse pode conter várias tags (Tags) e cada tag corresponde a uma imagem espelhada. Normalmente, um warehouse conterá imagens de diferentes versões do mesmo software e as tags correspondem a cada versão do software. Os usuários podem usar o formato “[<nome do armazém>:<rótulo>]” para especificar a imagem de uma determinada versão de um determinado software. Se nenhuma tag for fornecida, [latest] será usado como tag padrão.

A imagem usada desta vez é o registro:2, execute o seguinte comando para fazer o download e iniciá-lo automaticamente.

Host#     mkdir -p /home/tronlong/docker/myregistry

Host#     sudo docker run -d -p 5000:5000 -v /home/tronlong/docker/myregistry:/var/lib/registry Registry:2

Descrição do parâmetro:

-d: inicia o contêiner em segundo plano.

-p: Mapeia a porta 5000 do contêiner para a porta 5000 do Ubuntu (5000 é a porta do serviço de registro).

-v: Mapeie o diretório "/var/lib/registry" do contêiner para o diretório "/home/tronlong/docker/myregistry" do Ubuntu para armazenar dados de imagem.

  

Figura 9

Execute o seguinte comando para verificar se o contêiner foi iniciado. O conteúdo a seguir indica que o contêiner foi iniciado normalmente.

Host#     sudo docker ps

  

Figura 10

Visite "http://192.168.0.40:5000/v2/_catalog" através de um navegador. Se o seguinte conteúdo for retornado, significa que o registro foi iniciado com sucesso e 192.168.0.40 é o IP do Ubuntu.

Figura 11

Como acabou de ser estabelecido e executado, não há conteúdo espelhado nele. Neste ponto, a instalação do ambiente Docker está concluída.

3 construir imagem

Crie um novo diretório de trabalho "/home/tronlong/docker/dockerfile/" no Ubuntu e salve o pacote de compactação do sistema de arquivos e a documentação do produto no diretório "4-Software Documentation\Linux\Filesystem\docker\" da documentação do produto "4-Software Copie os arquivos executáveis ​​no diretório "Data\Demo\base-demos\led_flash\bin\" para o diretório compartilhado do Ubuntu e execute o seguinte comando para copiar para o diretório de trabalho do Docker.

Host#     mkdir /home/tronlong/docker/dockerfile

Host#     cp /mnt/hgfs/SharedFolders/led_flash /home/tronlong/docker/dockerfile/

Host#     cp /mnt/hgfs/SharedFolders/rootfs-v1.2-gcbfe5f3.tar.gz /home/tronlong/docker/dockerfile/

 

Figura 12

No diretório "/home/tronlong/docker/dockerfile/", crie um Dockerfile e grave o seguinte conteúdo.

Host#     cd /home/tronlong/docker/dockerfile

Host#     gedit Dockerfile

  

Figura 13

Figura 14

O conteúdo do arquivo Dockerfile é o seguinte:

DO zero #Construa uma nova imagem com base em uma imagem de base vazia

# Definir diretório de trabalho

WORKDIR /root #Define o diretório de trabalho para CMD, COPY e AND

# Descompacte o sistema de arquivos

ADICIONE rootfs-v1.2-gcbfe5f3.tar.gz / #Descompacte o sistema de arquivos

# Copiar arquivo para imagem

COPY led_flash #Copie o arquivo executável para o diretório "/home/root/" da imagem

# Comando Shell executado quando o container é iniciado

# CMD ["executável","param1","param2"]

CMD ["./led_flash", "-n 2"] #O comando shell executado quando o contêiner é iniciado, aqui está o comando para executar o programa de flash LED

Execute o seguinte comando no diretório onde o Dockerfile está localizado para criar a imagem.

Host#     sudo docker build -t 192.168.0.40:5000/led_flash:v1.0 . //Observe que o comando contém "." no final

Host#     sudo docker images //Veja a imagem construída

Descrição do parâmetro:

192.168.0.40: Endereço IP do Ubuntu;

-t: Especifique o nome e a tag da imagem (nome:tag).

  

Figura 15

Execute o seguinte comando para enviar a imagem para o Registro do warehouse local.

Host#     sudo docker push 192.168.0.40:5000/led_flash:v1.0

  

Figura 16

Após a versão 1.3.X do Docker, https é usado por padrão para interagir com o Docker Registry. No entanto, o warehouse privado construído acima fornece apenas o serviço http, portanto, a mensagem de erro acima aparecerá ao interagir com o warehouse privado. Este problema pode ser resolvido modificando o arquivo "/etc/docker/daemon.json", execute o seguinte comando, 192.168.0.40 é o IP do Ubuntu.

Host#     pratos /etc/docker/daemon.json

  

Figura 17

Adicione o seguinte conteúdo de configuração em daemon.json:

{ "registros inseguros": ["192.168.0.40:5000"]}:

Execute os seguintes comandos para reiniciar os contêineres do Docker e do Registro (especificando o ID) e envie novamente a imagem para o Registro local.

Host#     sudo /etc/init.d/docker restart

Host#     sudo docker ps -a

Host#     sudo docker start b898d3391bb9 //A ID do CONTAINER obtida na consulta deve prevalecer

Host#     sudo docker push 192.168.0.40:5000/led_flash:v1.0

Figura 18

Acesse "http://192.168.0.40:5000/v2/_catalog" através de um navegador, e você pode ver as imagens existentes no armazém atual.

  

Figura 19

4 Baixe a imagem e execute o contêiner

(1) Use um cabo de rede para conectar a porta de rede RGMII ETH da placa de avaliação ao roteador e certifique-se de que esteja na mesma rede que o Ubuntu, ligue a placa de avaliação e execute o seguinte comando para iniciar o processo do daemon dockerd. Após a execução do comando, será impressa uma mensagem de aviso, que não afeta o uso normal da função, ignore-a.

Target#         dockerd --storage-driver=vfs &

Figura 20

(2) Execute o seguinte comando para baixar a imagem e listar a imagem baixada. Durante o processo de download da imagem, mensagens de aviso e erro serão impressas, o que não afetará o uso normal das funções, ignore-as.

Target#         docker pull 192.168.0.40:5000/led_flash:v1.0 //Baixar imagem

Target#         docker images //Liste as imagens baixadas

Figura 21

Se o seguinte erro ocorrer, execute o seguinte comando para resolver este problema modificando o arquivo "/etc/docker/daemon.json" Depois que a modificação for salva, reinicie o processo do dockerd daemon.

Figura 22

Target#         vi /etc/docker/daemon.json

Figura 23

Adicione o seguinte conteúdo de configuração em daemon.json:

{ "registros inseguros": ["192.168.0.40:5000"]}

Target#         killall -9 dockerd // finaliza o processo

Target#         dockerd --storage-driver=vfs & //Reinicie o processo do daemon dockerd

  

Figura 24

(3) Crie e inicie o contêiner. Como o Docker usa o driver de armazenamento VFS, ao criar um contêiner, você precisa primeiro criar uma camada de contêiner, e essa camada de contêiner precisa executar uma "cópia profunda" da camada anterior, portanto, leva cerca de 1 minuto para concluir o processo de criando e iniciando o contêiner, aguarde pacientemente .

Target#         docker run -d --name led_flash -v /sys/:/sys 97c8b410ef97

Descrição do parâmetro:

-d: executa o contêiner em segundo plano;

--name: especifique um nome para o contêiner;

-v: Mapear o volume (mapear o diretório do host "/sys" para o "/sys" do contêiner);

97c8b410ef97: ID da imagem, com base no "ID DA IMAGEM" listado no comando de imagens do docker.

  

Figura 25

Após a conclusão da inicialização do contêiner, os 2 LEDs do usuário na placa de avaliação piscam simultaneamente.

(4) Operação básica do contêiner

Execute o seguinte comando para visualizar o contêiner em execução e insira o contêiner.

Alvo #         docker ps -a

Target#         docker exec -it d5e56fbbd1a8 /bin/bash

Descrição do parâmetro:

-i: Executa o container em modo interativo, geralmente usado junto com -t;

-t: reatribui um terminal de pseudo-entrada para o contêiner, geralmente usado junto com -i;

d5e56fbbd1a8: Container ID, sujeito ao "CONTAINER ID" real;

/bin/bash: Execute o comando "/bin/bash" no contêiner.

  

Figura 26

Execute o seguinte comando para sair do contêiner.

Bash#     sair

  

Figura 27

Execute o seguinte comando para parar o contêiner. Neste ponto, os 2 LEDs do usuário na placa de avaliação não estão mais piscando.

Alvo #       parada de encaixe d5e56fbbd1a8

Figura 28

Execute o seguinte comando para iniciar o contêiner. Neste ponto, os dois LEDs do usuário na placa de avaliação piscam simultaneamente.

Target#         docker start d5e56fbbd1a8

Figura 29

Observações: Se uma mensagem de aviso semelhante a "x509: certificado expirou ou ainda não é válido" aparecer ao executar o Docker (conforme mostrado na figura abaixo), execute o comando date para sincronizar a hora do sistema. Esta mensagem de aviso é causada pelo fato de a hora do sistema da placa de avaliação estar fora de sincronia com a hora real.

  

Figura 30 

Se você quiser saber mais sobre aplicativos incorporados, preste atenção à tecnologia Tronlong Chuanglong ~

Acho que você gosta

Origin blog.csdn.net/Tronlong/article/details/131410235
Recomendado
Clasificación