Resumo do combate real do Docker (muito abrangente, coleção recomendada)

1. Introdução ao Docker

Docker é um mecanismo de contêiner de aplicativo de código aberto. Os desenvolvedores podem empacotar seus próprios aplicativos em contêineres e, em seguida, migrar para aplicativos docker em outras máquinas para obter uma implantação rápida.

De forma simples, o docker é uma plataforma de software em contêineres. Assim como navios, trens e caminhões transportam contêineres, independentemente de suas mercadorias internas, os contêineres de software servem como uma unidade padrão para implantação de software, que pode conter diferentes códigos e dependências.

Desta forma, para armazenar software, desenvolvedores e profissionais de TI podem implantá-lo em diferentes ambientes com o mínimo ou nenhuma modificação.Se ocorrer uma falha, o serviço também pode ser restaurado rapidamente por meio de espelhamento.

2. Vantagem do Docker

1. Recursos

2. Vantagens de recursos

Três, conceitos básicos do Docker

Cliente : é o cliente do Docker, que pode aceitar comandos do usuário e identificação de configuração, e se comunicar com o daemon do Docker.

Imagens : é um modelo somente leitura com instruções para a criação de contêineres do Docker. É um pouco semelhante ao CD de instalação do sistema operacional.

Containers (containers) : a instância em execução da imagem, a relação entre a imagem e o container é análoga às classes e objetos na orientação a objetos.

Registro (warehouse): é um serviço de armazenamento e distribuição centralizada de imagens. O registro mais comumente usado é o Docker Hub oficial.

Quatro, instalação e uso do Docker

  • Sistema operacional: CentOS 7

1. Dependências de instalação

yum install -y yum-utils device-mapper-persistent-data lvm2

2. Adicionar fonte de software

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Especifique a fonte do espelho da nuvem Alibaba

3. Instale docker-ce (existem certos requisitos para o kernel do sistema, centos6 não suporta)

yum clean all yum makecache fast # Regenere o cache

yum -y install docker-ce docker-ce-cli containerd.io

4. Definir autoinício e início

systemctl enable docker

systemctl start docker

5. Ver versão

versão docker

  •  Exemplo de execução: Nginx

1. Pesquise e baixe o espelho

docker search nginx

docker pull nginx

2. Inicie um contêiner e mapeie a porta para o local

docker run -d -p 8080: 80 --name Nginx nginx # Veja abaixo os detalhes sobre os parâmetros

3. Acesse a porta mapeada local

Cinco, comandos mais usados ​​do Docker

1. Controle de espelho

 Espelho de pesquisa: docker search [OPÇÕES] TERM

Carregar imagem: docker push [OPÇÕES] NOME [: TAG]

Baixe o espelho: docker pull [OPÇÕES] NOME [: TAG]

Enviar espelho: docker commit [OPÇÕES] NOME DO CONTÊINER [: TAG]

Crie a imagem: docker build [OPÇÕES] PATH

Excluir imagem: docker rmi [OPÇÕES] IMAGEM [IMAGEM ...]

Adicionar tag de imagem: tag docker SOURCE_IMAGE [: TAG] TARGET_IMAGE [: TAG]

Ver todas as imagens: imagens do docker [OPÇÕES] [REPOSITÓRIO [: TAG]]

2. Controle de contêiner

Iniciar / reiniciar o contêiner: docker iniciar / reiniciar CONTAINER

Parar / forçar a parada do contêiner: docker parar / matar CONTAINER

Excluir contêiner: docker rm [OPÇÕES] CONTAINER [CONTAINER ...]

Renomeie o contêiner: docker rename CONTAINER CONTAINER_NEW

Insira o contêiner: docker attach CONTAINER

Execute o comando do container: docker exec CONTAINER COMMAND

Ver registros do contêiner: registros do docker [OPÇÕES] CONTAINER

Veja a lista de contêineres: docker ps [OPÇÕES]

3. Início do contêiner

docker executar [OPÇÕES] IMAGEM [COMANDO] [ARG ...]

-d:  executa o contêiner em segundo plano e retorna o ID do contêiner

-i: executa o contêiner no modo interativo, geralmente usado com -t

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

-v: diretório de montagem de ligação

--name = "mycontainer":  especifique um nome para o contêiner

--net = "bridge":  especifica o tipo de conexão de rede do contêiner, que suporta o seguinte:

     ponte / host / nenhum / contêiner: <nome | id>

-p / -P: mapeamento da porta, o formato é como mostrado na figura:

4. Outros comandos

Ver informações do docker: informações do docker

Ajuda do comando docker: docker run --help

Copie o arquivo para o contêiner: docker cp custom.conf Nginx: /etc/nginx/conf.d/

Atualize os itens de inicialização do contêiner: docker container update --restart = always nginx

Visualize o registro do docker: tail -f / var / log / messages

Seis, construção de imagem Docker

1. Docker commit (1 execução 2 modificação 3 salvamento)

a) Execute o contêiner

docker run -dit -p 8080: 80 --name Nginx nginx

b) Modifique o contêiner (estou apenas fazendo uma demonstração aqui, então apenas copie o arquivo, a modificação específica precisa ser baseada na sua situação real)

docker cp custom.conf Nginx: /etc/nginx/conf.d/

c) Salve o recipiente como uma nova imagem

docker commit Nginx zwx / nginx

 

 2. Dockerfile (1 gravação 2 construção)

a) Grave o arquivo Dockerfile

vim Dockerfile

b) Execute o arquivo Dockerfile

docker build -t zwx / nginx. # Há um ponto atrás, que representa o arquivo dockerfile no diretório atual

 3. Instruções comuns do Dockerfile

Sete, armazém local Docker

1. Puxe o armazém de espelho

registro de pesquisa docker

docker pull registry

2. Inicie o serviço de espelhamento

docker run -dit \

--name = Registry \ # Especifique o nome do contêiner

-p 5000: 5000 \ # A porta padrão do warehouse é 5000, que é mapeada para o host, para que possa ser acessada usando o endereço do host

--restart = always \ # Reinicialização automática, para que o contêiner do warehouse seja iniciado automaticamente sempre que o docker for reiniciado

--privileged = true \ # Aumenta as permissões de segurança, geralmente não adicionadas

-v / usr / local / my_registry: / var / lib / registry \ # salva os dados da imagem do warehouse no host

registro

3. Registre-se para o protocolo https (você precisa baixar a imagem espelhada através do armazém local, tudo precisa ser configurado)

vim /etc/docker/daemon.json # Esse arquivo não existe por padrão, você precisa adicioná-lo você mesmo ou adicionar o conteúdo, se tiver.

   {"insecure-registries": ["xx.xx.xx.xx: 5000"]} # Especifique o endereço IP ou nome de domínio

4. Adicione uma etiqueta para indicar o endereço do armazém

docker  tag  zwx / nginx x.xx.xx.xx: 5000 / zwx / nginx # Se o endereço do armazém foi especificado durante a construção, pode ser omitido

5. Faça upload da imagem para o armazém local

docker  push  x.xx.xx.xx: 5000 / zwx / nginx

6. Veja o armazém local

curl -XGET http: //x.xx.xx.xx: 5000 / v2 / _catalog

8. Docker e Portainer, uma ferramenta de gerenciamento gráfico

1. Introdução

Portainer é uma ferramenta de gerenciamento gráfico para Docker, fornecendo painéis de exibição de status, implantação rápida de modelos de aplicativos e operações básicas de volumes de dados de rede de espelhamento de contêiner (incluindo upload e download de imagens, criação de contêineres etc.)

Exibição de log de eventos, operação de console de contêiner, gerenciamento centralizado e operação de clusters e serviços Swarm, gerenciamento de usuário de login e funções de controle. As funções são muito abrangentes e podem atender basicamente a todas as necessidades de unidades de pequeno e médio porte para o gerenciamento de contêineres.

2. Instalação e uso

a) Pesquise e baixe o espelho

docker search portainer

docker pull portainer / portainer

b) Operação autônoma

docker run -d \

-p 9000: 9000 \ # A porta padrão do portainer é 9000, que é mapeada para a porta 9000 local e acessada através do endereço local

--restart = sempre \ # definir reinício automático

-v /var/run/docker.sock:/var/run/docker.sock \ # Uma única máquina deve especificar docker.sock

--name Prtainer portainer / portainer

c) Visite http: // localhost: 9000

Para fazer login pela primeira vez, você precisa registrar um usuário, definir uma senha para o usuário admin e, em seguida, selecionar a conexão local para a versão autônoma.

 d) Gestão de controle

Nine, Docker e ferramenta de gerenciamento de cluster Swarm

1. Introdução

Swarm é uma ferramenta de gerenciamento de cluster fornecida oficialmente pelo Docker. Sua função principal é abstrair vários hosts Docker em um todo e gerenciar vários recursos Docker nesses hosts Docker por meio de uma entrada.

2. Instalação e uso

    Swarm era um projeto independente antes do Docker 1.12. Após o lançamento do Docker 1.12, o projeto foi fundido no Docker e se tornou um subcomando do Docker.

a) Iniciar o cluster swarm só precisa executar o comando de inicialização:

docker swarm init \ # O nó de inicialização padrão é o nó de gerenciamento
--advertise-addr xx.xx.xx.xx \ #Especifique o ip usado
--listen-addr xx.xx.xx.xx: 2377 #Especifique o ip e porta de escuta, O padrão é 2377

    

b) Configure o nó gerenciador

    docker swarm join-token manager # Obtenha o      token do nó de gerenciamento e coloque o seguinte comando

docker swarm join \
--advertise-addr xx.xx.xx.xx \
--listen-addr xx.xx.xx.xx: 2377 \
--token SWMTKN-
1-29ynh5uyfiiospy4fsm4pd4xucyji2rn0oj4b4ak4s7a37xsyf9.jrijrv2ctxx.xxxxx.xx75 : 2377

c) Configurar nós de trabalho

    trabalhador docker swarm join-token # Obtenha o token do nó do trabalhador e coloque o seguinte comando

docker swarm join \
--advertise-addr xx.xx.xx.xx \
--listen-addr xx.xx.xx.xx: 2377 \
--token SWMTKN-
1-29ynh5uyfiiospy4fsm4pd4xucyji2rn0oj4b4ak4s7a37xsyf9.jrijrv2ctxx.xxxxx.xx75 : 2377

c) Ver nós

 docker node ls

    

 

d) Criar serviço

serviço docker criar [OPÇÕES] IMAGEM [COMANDO] [ARG ...]

--detach, -d: especifica se o contêiner está sendo executado em primeiro ou segundo plano, o padrão é falso

--name: nome do serviço

--network: conexão de rede

--publish, -p: mapeamento de porta

--env, -e: definir variáveis ​​de ambiente

--tty, -t: aloca dispositivos tty, que podem suportar login de terminal

--mount: montagem de arquivo

--replicas: especifica o número de tarefas

3. Quais são as semelhanças e diferenças em relação ao K8s?

a) Diferentes nascimentos

Com base em sua experiência em gerenciamento de contêineres no Linux, o Google o transformou em gerenciamento docker, que é o kubernetes. Seu desempenho é bom em muitos aspectos, o mais importante dos quais se baseia nos anos de valiosa experiência do Google.

O Kubernetes não foi escrito para o docker. O Kubernetes leva o cluster a um nível totalmente novo, ao custo de uma curva de aprendizado acentuada. docker-swarm usa uma abordagem diferente, é uma ferramenta de cluster nativa para docker.

A parte mais conveniente é que ele expõe a interface de programação padrão do docker, o que significa que todas as ferramentas que você está usando para se comunicar com o docker (docker CLI, docker compose, etc.) podem ser usadas perfeitamente no docker swarm.

b) Diferentes configurações de instalação

Instalar e configurar o swarm é muito simples, simples, claro e flexível. Tudo o que precisamos fazer é instalar uma ferramenta de descoberta de serviço e, em seguida, instalar o contêiner swarm em todos os nós.

Em comparação, a instalação do kubernetes é um pouco complicada e obscura. A instalação é diferente em diferentes sistemas operacionais. Cada sistema operacional possui suas próprias instruções de instalação independentes.

c) Diferentes modos de operação

Usar o Swarm não é diferente de usar contêineres. Por exemplo, se você está acostumado a usar o Docker CLI (interface de linha de comando), pode continuar a usar quase os mesmos comandos.

Se você está acostumado a usar o Docker Componse para executar contêineres, pode continuar a usá-lo em um cluster Swarm. Não importa como você está acostumado a usar contêineres antes, ainda pode usá-los, mas apenas em clusters maiores.

O Kubernetes exige que você aprenda sua própria CLI (interface de linha de comando) e configuração. Você não pode usar a configuração docker-compose.yml criada anteriormente; você deve criar uma nova configuração correspondente ao Kubernetes.

Você também não pode usar a Docker CLI (interface de linha de comando) que aprendeu anteriormente. Você tem que aprender Kubernetes CLI (Command Line Interface)

Finalmente, quando você precisa fazer uma escolha entre Docker Swarm e Kubernetes, pode considerar os seguintes pontos:

Você quer contar com o Docker para resolver o problema do cluster sozinho?

Nesse caso, escolha Swarm. Se certas funções não forem suportadas no Docker, é muito provável que elas não possam ser encontradas no Swarm, porque o Swarm depende da API Docker.

Por outro lado, se você deseja uma ferramenta que possa resolver as limitações do Docker, o Kubernetes será uma boa escolha. O Kubernetes não é baseado no Docker, mas nos anos de experiência do Google no gerenciamento de contêineres. Ele está agindo à sua maneira.

Ten, fluxograma de operação e manutenção do Docker

 Onze, gerenciamento de configuração do Docker

1. Depois de usar o contêiner, ainda preciso do gerenciamento de configuração?

No início, pertencíamos à escola idealista, assim como o oficial Docker. Ingenuamente pense que o contêiner deve ser inmutável. Quando as alterações de configuração são necessárias, a imagem é reconstruída e implantada.

Com base nessa ideia, adicionamos um módulo de espelhamento automático ao cSphere, e os usuários podem configurar o endereço do repositório de código.

O arquivo de configuração de serviço é armazenado na biblioteca Git ou SVN. Quando mudanças de configuração forem necessárias, envie-o para a biblioteca de versão para acionar automaticamente a construção da imagem por meio do gancho e concluir automaticamente a reconstrução do contêiner online.

Por meio desse sistema, os usuários podem atualizar os serviços online em lotes de maneira muito conveniente, não se limitando a alterações no arquivo de configuração, as alterações de código também são naturalmente suportadas.

Após o uso real, este sistema pode atender às necessidades do ambiente de desenvolvimento e teste e melhorar a eficiência do trabalho.

No entanto, quando usado em um ambiente de produção, descobrimos que esse processo não é tão perfeito, principalmente em:

Embora a construção e a implantação da imagem sejam automatizadas, a construção é para um determinado warehouse no VCS. Se você alterar a configuração de uma linha, terá que reconstruir o todo. Ao atualizar o contêiner, é necessário redistribuir a imagem para todas as máquinas. A velocidade de alteração da configuração é muito lenta .

A alteração da configuração desta forma envolverá o reinício do serviço, o que é inaceitável em alguns cenários no ambiente de produção e pode causar uma curta interrupção do serviço.

2. O que o arquivo de configuração do aplicativo deve fazer?

O arquivo de configuração do aplicativo Docker pode permanecer capaz de suportar alterações em diferentes ambientes. Além disso, o arquivo de configuração oferece suporte a alterações online, que entrarão em vigor após a reinicialização. Geralmente dividido nas duas maneiras a seguir.

a) Variáveis ​​de ambiente do Docker

Você precisa descobrir com antecedência, ao fazer a imagem, quais parâmetros são frequentemente alterados quando o contêiner é implantado e, em seguida, extrair esses parâmetros para criar as variáveis ​​de ambiente do contêiner e, em seguida, preencher diferentes parâmetros ao implantar o contêiner. pode.

No entanto, se você descobrir que alguns parâmetros serão modificados quando implantados em diferentes cenários, será necessário recriar a imagem.

b) Arquivo de configuração do aplicativo

O método de gerenciamento acima não é muito flexível.O método de gerenciamento flexível é separar o arquivo de configuração e o espelho, de modo que não seja limitado pelo espelho.

Nota: a versão mais recente pode referir-se ao gerenciamento do comando docker config

12. Perguntas de acompanhamento do Docker

  •    Ambiente de cluster
  •    cíber segurança
  •    Gerenciamento de armazenamento
  •    Coleta de toras
  •    monitoramento em tempo real
  •    Ajuste de desempenho
  •    ……

Leitura recomendada de obras:

Entrevista Meituan foi abusado por JVM? Os arquitetos Ali P9 usam 500 minutos para falar sobre JVM desde a entrada até o combate real # 集集

O arquiteto Ali P9 leva você a dominar o pool de threads em 120 minutos, para que você não se preocupe mais com as threads

O código-fonte do Spring combate os trabalhos completos, os arquitetos seniores irão guiá-lo para entender a parte inferior do código-fonte do Spring da entrada ao túmulo

[Entrevista] É ótimo, Ali P8 realmente apareceu para explicar a estrutura de dados, a entrevista de algoritmo da grande fábrica e a camada inferior do Redis!

Não aceite nenhuma refutação, o tutorial mais completo e detalhado dos princípios básicos do Netty em toda a estação B, todo o processo é seco e sem sentido, e eu não consigo me entender comendo papel!

Acho que você gosta

Origin blog.csdn.net/weixin_45132238/article/details/108664115
Recomendado
Clasificación