Na era nativa da nuvem, esses pontos de habilidade do Docker farão você dar um tapa no entrevistador

insira a descrição da imagem aqui

Diretório de artigos

1. Visão geral do Docker

1. Introdução ao Docker

Docker é um mecanismo de contêiner de aplicativo de código aberto

Em 2008, Solomon Hykes co-fundou uma empresa chamada DotCloud com seus amigos Kamel Founadi e Sebastien Pahl, com o objetivo de usar uma tecnologia chamada containers para criar o que eles chamaram de "ferramentas de inovação massiva": qualquer ferramenta de programação que qualquer um pode usar .

Após anos de desenvolvimento, o Docker finalmente nasceu no início de 2013, baseado na linguagem Go. O fundador do Docker, Solomon Hykes, apresentou o Docker publicamente pela primeira vez em sua apresentação no PyCon.
insira a descrição da imagem aqui

O Docker permite que os desenvolvedores empacotam seus aplicativos e dependências em um contêiner leve e portátil que pode ser distribuído para qualquer máquina Linux popular.

Os contêineres são completamente sandboxed e isolados uns dos outros. A sobrecarga de desempenho do contêiner é extremamente baixa.

O Docker foi dividido em CE (Community Edition: Community Edition) e EE (Enterprise Edition: Enterprise Edition) desde a versão 17.03

2. Instale o Docker

1. Ambiente Windows

Instalar o Docker no Windows é relativamente simples. A primeira coisa a fazer é ativar os recursos do Windows .

Abra o Hyper-V
insira a descrição da imagem aqui
e abra
insira a descrição da imagem aqui
o Windows Subsystem para Linux Baixe o espelho do site oficial
insira a descrição da imagem aqui

Clique na imagem baixada e continue
insira a descrição da imagem aqui

2. Instalação do Ubuntu

Instalar o Docker no Ubuntu é mais fácil, basta usar o script de instalação oficial para instalá-lo.

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3. Instalação do CentOS

A instalação do CentOS também pode usar scripts

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3. Arquitetura do Docker

insira a descrição da imagem aqui

1. Espelho

Uma imagem do Docker (Imagem) é equivalente a um sistema de arquivos raiz. Por exemplo, a imagem oficial ubuntu:20.04 contém um conjunto completo de sistemas de arquivos raiz do sistema mínimo Ubuntu20.04.

Para dar um exemplo mais próximo da vida, deve ser que quando nosso sistema está quebrado, precisamos reinstalar o sistema. Os arquivos na figura são semelhantes a imagens espelhadas.
insira a descrição da imagem aqui

2. Contêiner

A relação entre uma imagem e um container é como uma classe e um objeto na programação orientada a objetos.Uma imagem é uma definição estática e um container é uma entidade quando a imagem é executada. Os contêineres podem ser criados, iniciados, parados, excluídos, suspensos etc.

Continuando o exemplo acima, o container é equivalente ao sistema Windows instalado. Ao instalar a imagem, podemos utilizar nosso sistema para realizar diversas operações
insira a descrição da imagem aqui

3. Armazém

O repositório pode ser visto como um centro de controle de código para armazenamento de imagens.

O warehouse é como o MSDN, o site que costumamos acessar para baixar espelhos do Windows, e há um grande número de espelhos nele.
insira a descrição da imagem aqui

2. Comandos do Docker

1. Comandos relacionados ao processo

1. Inicie o serviço docker

systemctl start docker

2. Pare o serviço docker

systemctl stop docker

3. Reinicie o serviço docker

systemctl restart docker

4. Visualize o status do serviço docker

systemctl status docker

5. Inicie o serviço docker na inicialização

systemctl enable docker

2. Comandos relacionados ao espelho

1. Veja o espelho

1. Visualize todos os espelhos locais
docker images
2. Visualize o id da imagem usada
docker images -q
2. Procure espelhos
docker search 镜像名称
3. Puxe a imagem
docker pull 镜像名称  

Baixe a imagem do repositório do Docker para o local, o formato do nome da imagem é name:version number, se o número da versão não for especificado, é a versão mais recente

4. Exclua o espelho
1. Exclua o espelho local especificado
docker rmi 镜像id
2. Exclua todos os espelhos locais
docker rmi docker images -q

3. Comandos relacionados ao contêiner

1. Visualize o contêiner

1. Veja os contêineres em execução
docker ps
2. Veja todos os contêineres
docker ps -a

2. Crie e inicie o contêiner

docker run 参数

Descrição do parâmetro:

parâmetro ilustrar
-eu Mantenha o recipiente funcionando. Geralmente usado com -t. Depois de adicionar os dois parâmetros dele, o contêiner entra automaticamente no contêiner após ser criado e o contêiner é fechado automaticamente após sair do contêiner.
-t Realoque um terminal de pseudo-entrada para o contêiner, geralmente usado com -i.
-d Execute o contêiner no modo daemon (segundo plano). Para criar um contêiner para ser executado em segundo plano, você precisa usar o docker exec para entrar no contêiner. Após sair, o container não fecha.

3. Insira o contêiner

docker exec 参数      # 退出容器,容器不会关闭

4. Inicie o recipiente

docker start 容器名称

5. Pare o recipiente

docker stop 容器名称

6. Exclua o contêiner

docker rm 容器名称 

Se o contêiner estiver em execução, a exclusão falhar, você precisa parar o contêiner para excluir

7. Visualize as informações do contêiner

docker inspect 容器名称

3. Volumes de dados para contêineres do Docker

1. O conceito e o papel dos volumes de dados

1. Conceito

insira a descrição da imagem aqui

  1. Um volume de dados é um diretório ou arquivo no host
  2. Quando o diretório do contêiner e o diretório do volume de dados estiverem vinculados, a modificação da outra parte será sincronizada imediatamente
  3. Um volume de dados pode ser montado por vários contêineres ao mesmo tempo
  4. Um contêiner também pode ser montado com vários volumes de dados

2. Função

  1. Persistência de dados do contêiner
  2. Comunicação indireta entre máquina externa e container

2. Configure o volume de dados

1. Método de configuração

Ao criar um contêiner de inicialização, use o parâmetro –v para definir o volume de dados

docker run ... –v 宿主机目录(文件):容器内目录(文件) 

2. Precauções

  1. O diretório deve ser um caminho absoluto
  2. Se o diretório não existir, ele será criado automaticamente
  3. Vários volumes de dados podem ser montados

3. Configure o contêiner de volume de dados

1. Vários contêineres para troca de dados

  1. Vários contêineres montam o mesmo volume de dados
  2. recipiente de volume de dados

2. Método de configuração

  1. Crie um contêiner de volume de dados c3 inicial, use o parâmetro –v para definir o volume de dados
docker run –it --name=c3 –v /volume centos:7 /bin/bash  
  1. Crie e inicie o contêiner c1 c2, use o parâmetro --volumes-from para definir o volume de dados
docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bashdocker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash

4. Implantação do aplicativo Docker

  1. Serviços de rede dentro do contêiner e máquinas externas não podem se comunicar diretamente
  2. Máquina externa e host podem se comunicar diretamente
  3. Host e contêiner podem se comunicar diretamente
  4. Quando o serviço de rede no contêiner precisa ser acessado por uma máquina externa, a porta que fornece o serviço no contêiner pode ser mapeada para a porta da máquina host. Máquinas externas acessam esta porta do host, acessando assim indiretamente os serviços do container.
  5. Esta operação é chamada: mapeamento de porta contêiner de máquina externa

5. Dockerfile

1. Princípio da imagem do Docker

insira a descrição da imagem aqui

  1. As imagens do Docker são sobrepostas por um sistema de arquivos especial
  2. A parte inferior é bootfs e usa bootfs do host
  3. A segunda camada é o sistema de arquivos raiz rootfs , chamado de imagem base
  4. Então você pode empilhar outros arquivos de imagem no topo
  5. A tecnologia **Union File System** pode integrar diferentes camadas em um sistema de arquivos, fornecendo uma perspectiva unificada para essas camadas, ocultando assim a existência de várias camadas.Do ponto de vista do usuário, existe apenas um sistema de arquivos.
  6. Uma imagem pode ser colocada em cima de outra imagem. A imagem abaixo é chamada de imagem pai e a imagem inferior se torna a imagem base.
  7. Ao iniciar um contêiner a partir de uma imagem, o Docker monta um sistema de arquivos de leitura e gravação no nível superior como o contêiner

1. Sistema de arquivos Linux

Diferentes distribuições linux, o bootfs é basicamente o mesmo, mas o rootfs é diferente, como ubuntu, centos, etc.

1. botas

Contém bootloader (boot loader) e kernel (kernel)

2. raízes

O sistema de arquivos raiz contém diretórios e arquivos padrão como /dev, /proc, /bin, /etc em um sistema Linux típico

2. Criação de imagem do Docker

insira a descrição da imagem aqui

1. Converta o contêiner em uma imagem

docker commit 容器id 镜像名称:版本号 
docker save -o 压缩文件名称 镜像名称:版本号 
docker load –i 压缩文件名称

3. Palavras-chave do Dockerfile

palavras-chave efeito Observação
A PARTIR DE especificar imagem pai Especifica que o dockerfile é baseado em qual imagem construir
MANTENEDOR Informação sobre o autor Usado para indicar quem escreveu este dockerfile
RÓTULO Rótulo O rótulo usado para indicar que o dockerfile pode usar Label em vez do Mantenedor, que pode ser visualizado nas informações básicas da imagem do docker
CORRER Executando um pedido Execute um comando por padrão no formato /bin/sh: comando RUN ou RUN [“command” , “param1”, “param2”]
CMD comando de inicialização do contêiner Fornece o comando padrão a ser usado com ENTRYPOINT ao iniciar o contêiner. Formatar comando CMD param1 param2 ou CMD ["command", "param1", "param2"]
PONTO DE ENTRADA Entrada Geralmente usado na confecção de alguns contêineres que são fechados após a execução
CÓPIA DE copiar arquivo Copie o arquivo para a imagem ao construir
ADICIONAR adicionar arquivos Adicionar arquivos à imagem durante a compilação não se limita ao contexto de compilação atual e pode vir de serviços remotos
ENV variável de ambiente A variável de ambiente ao especificar a compilação pode ser substituída no formato ENV name=value por meio de -e quando o contêiner é iniciado
ARG parâmetros de construção Os parâmetros de compilação são usados ​​apenas no momento da compilação. Se houver ENV, o valor de mesmo nome de ENV sempre substituirá o parâmetro de arg
VOLUME Definir volumes de dados montáveis ​​externamente Especifique os diretórios da imagem de construção que podem ser montados no sistema de arquivos ao iniciar. Ao iniciar o contêiner, use o formato de ligação -v VOLUME ["diretório"]
EXPOR porta exposta Defina a porta escutando quando o contêiner estiver em execução Inicie o contêiner usando -p para vincular o formato da porta exposta: EXPOSE 8080 ou EXPOSE 8080/udp
WORKDIR Lista de trabalho Se o diretório de trabalho dentro do container especificado não for criado, ele será criado automaticamente. Se o / especificado usar um endereço absoluto, se não começar com /, então é o caminho relativo do caminho do workdir anterior
DO UTILIZADOR Especifique o usuário de execução Especifique o usuário quando o usuário executa o RUN CMD ENTRYPONT ao construir ou iniciar
EXAME DE SAÚDE Exame de saúde O comando para especificar o monitoramento de integridade do contêiner atual é basicamente inútil porque muitas vezes o próprio aplicativo possui um mecanismo de monitoramento de integridade
CONSTRUIR acionar Quando a imagem com a palavra-chave ONBUILD for usada como imagem base, o comando ONBUILD será executado após a execução de FROM, mas não afeta o uso da imagem atual e não é muito útil
SINAL DE PARADA Enviar um semáforo para o host A diretiva STOPSIGNAL configura o sinal de chamada do sistema que será enviado ao container para sair.
CONCHA Especifique o shell para executar o script Especifique o shell usado quando RUN CMD ENTRYPOINT executa o comando

6. Orquestração de serviço do Docker

O sistema de aplicativos da arquitetura de microsserviços geralmente contém vários microsserviços e cada microsserviço geralmente implanta várias instâncias. Se cada microsserviço precisar ser iniciado e interrompido manualmente, a carga de trabalho de manutenção será muito grande.

  1. Para criar uma imagem do Dockerfile ou extrair a imagem do dockerhub
  2. Para criar vários contêineres
  3. Para gerenciar esses contêineres (iniciar parar excluir)

Neste momento, seria bom se houvesse uma ferramenta que nos permitisse concluir essas operações convenientemente.

E o Docker compose pode fazer isso por nós.

1. Visão geral do Docker Compose

insira a descrição da imagem aqui

O Docker Compose é uma ferramenta para orquestrar implantações distribuídas de vários contêineres, fornecendo um conjunto de comandos para gerenciar o ciclo completo de desenvolvimento de aplicativos em contêineres, incluindo criação, inicialização e interrupção de serviços.

2. Etapas para usar o Docker Compose

  1. Use o Dockerfile para definir a imagem do ambiente em execução
  2. Use docker-compose.yml para definir os serviços que compõem o aplicativo
  3. Execute docker-compose up para iniciar o aplicativo

3. Instalação e uso do Docker Compose:

1. Instale o Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose

# 查看版本信息 
docker-compose -version

7. Repositório Privado Docker

1. Configuração de armazém privado

# 1、拉取私有仓库镜像 
docker pull registry

# 2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry

# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功

# 4、修改daemon.json   
vim /etc/docker/daemon.json    

# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip 
{
    
    "insecure-registries":["私有仓库服务器ip:5000"]} 

# 5、重启docker 服务 
systemctl restart docker
docker start registry

2. Faça upload da imagem para o repositório privado

# 1、标记镜像为私有仓库的镜像     
docker tag centos:7 私有仓库服务器IP:5000/centos:7
 
# 2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/centos:7

3. Extraia imagens de repositórios privados

#拉取镜像 
docker pull 私有仓库服务器ip:5000/centos:7

8. Docker vs. máquinas virtuais tradicionais

característica recipiente máquina virtual
velocidade de inicialização segundos nível minuto
uso do disco rígido ~MB ~GB
custo de memória muito pequeno mais
atuação perto do nativo pior que nativo
suporte do sistema Uma única máquina suporta milhares de contêineres Geralmente dezenas
isolamento Isolamento seguro completamente isolado
mobilidade excelente pobre

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_21484461/article/details/124027213
Recomendado
Clasificación