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
- ……