Introdução e uso do docker

                                  **Docker**

1. Introdução ao docker
1. O que é docker?
O mecanismo de contêiner de código aberto mais amplamente usado. Uma tecnologia de virtualização em nível de sistema operacional que depende dos recursos do kernel Linux: Namespace (isolamento de recursos) e Cgroups (restrição de recursos). Um pacote de aplicativo simples ferramenta.

2. Os objetivos de design do docker

(1) Entrega e implantação rápidas: usando o docker, os desenvolvedores podem usar espelhos para construir rapidamente um ambiente de desenvolvimento padrão; após a conclusão do desenvolvimento, o pessoal de teste, operação e manutenção pode usar diretamente o mesmo ambiente para implantar o código. Docker pode criar e excluir contêineres rapidamente, obter iteração rápida e economizar muito tempo em desenvolvimento, teste e implantação. Além disso, cada etapa tem configuração e operação claras e todo o processo é visível, facilitando para a equipe entender a criação do aplicativo e o processo de trabalho.
(2) Utilização eficiente de recursos: A operação de contêineres docker não requer suporte adicional de hipervisor de virtualização, requer apenas virtualização em nível de kernel, que pode atingir maior desempenho, exigindo muito poucos recursos adicionais. Fácil migração e expansão: pode ser executado em praticamente qualquer plataforma, incluindo máquinas físicas, máquinas virtuais, nuvens públicas, nuvens privadas, computadores pessoais, etc. Essa compatibilidade permite que os usuários migrem aplicativos facilmente entre diferentes plataformas.
(3) Gerenciamento simples de atualizações: usando o Dockerfile, você só precisa modificar a configuração para substituir uma grande quantidade de trabalho de atualização. E todas as modificações são distribuídas e atualizadas de forma incremental, alcançando assim um gerenciamento automatizado e eficiente de contêineres.

3. A composição do docker

Cliente Docker (cliente) O cliente Docker é a interface do usuário do Docker, que pode aceitar comandos do usuário e identificadores de configuração e se comunicar com o daemon do Docker. Na imagem, docker build, etc. são todos comandos relacionados ao Docker.
docker Daemon (daemon) O daemon Docker é um processo em segundo plano executado no host (DOCKER-HOST). Ele pode ser comunicado via cliente Docker.
Imagens Docker Uma imagem Docker é um modelo somente leitura que contém instruções para criar um contêiner Docker. É um pouco semelhante ao CD de instalação do sistema. Você pode usar o CD de instalação do sistema para instalar o sistema. Da mesma forma, você pode usar a imagem do Docker para executar os programas na imagem do Docker.
Contêiner Docker (contêiner) Um contêiner é uma instância executável de uma imagem. A relação entre imagens e contêineres é um tanto semelhante à relação entre classes e objetos na tecnologia orientada a objetos. Os contêineres podem ser iniciados, interrompidos, movidos e excluídos por meio da API Docker ou de comandos CLI.
Registro Docker (armazém espelho) Docker Registry é um serviço que armazena e distribui imagens centralmente. Depois de construir a imagem Docker, ela pode ser executada no host atual. Mas se quiser rodar esta imagem em outras máquinas, será necessário copiá-la manualmente. Neste momento, você pode usar o Docker Registry para evitar a cópia manual de imagens. Um registro Docker pode conter vários repositórios Docker, cada repositório pode conter várias tags de imagem e cada tag corresponde a uma imagem Docker.

Insira a descrição da imagem aqui

4. Comparação entre contêineres docker e virtualização tradicional

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

5. Cenários de aplicativos Docker
(1), empacotamento e publicação de aplicativos
(2), isolamento de aplicativos
(3), integração contínua
(4), implantação de microsserviços
(5), construção rápida de um ambiente de teste
(6) e fornecimento de produtos PaaS (Plataforma como um serviço)

6. Os três conceitos básicos de docker
(1), imagem (contêiner instalado na imagem)
(2), contêiner (vários serviços)
(3) armazém (imagem instalada)

2. Instalação do Docker (yum)

1. Software dependente da instalação do Linux
yum install -y yum-utils device-mapper-persistent-data lvm2
Insira a descrição da imagem aqui

2. Atualize a fonte do docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Insira a descrição da imagem aqui

3、Instale o docker
yum install -y docker-ce docker-ce-cli containerd.id
Insira a descrição da imagem aqui

4. Inicie o docker e configure-o para iniciar automaticamente
o systemctl start docker #Inicie o docker
systemctl enable docker #Defina o docker para iniciar automaticamente na inicialização
Insira a descrição da imagem aqui

5. Adicionar imagem doméstica do Docker
A velocidade da rede do armazém de imagem oficial do Docker é baixa, precisamos configurar o serviço de imagem doméstico:
consulte o documento de aceleração de imagem do Alibaba Cloud: https://cr.console.aliyun.com/cn-hangzhou/instances/ espelhos

sudo tee /etc/docker/daemon.json <<-'EOF'
{ “espelhos de registro”: [“https://akchsmlh.mirror.aliyuncs.com”] } EOF


##Recarregue o arquivo
sudo systemctl daemon-reload
##Reinicie o docker
sudo systemctl restart docker

3. Espelho

1. Espelho: De modo geral, um espelho é um arquivo somente leitura que contém o ambiente e o código necessários para a execução do programa. Ele usa um sistema de arquivos em camadas para adicionar alterações em cada camada ao arquivo somente leitura original no formato de uma camada de leitura e gravação. Em termos de arquivo, isso é um pouco como uma cebola. Diferentes contêineres podem ser criados através da imagem base.

2. Arquitetura da imagem
A camada inferior da imagem é uma imagem do sistema de arquivos de inicialização (bootfs). A imagem superior do bootfs é chamada de imagem raiz. De modo geral, a imagem raiz é um sistema operacional, como Ubuntu, CentOS, etc. A imagem do usuário deve ser construída Sobre a imagem raiz, os usuários podem construir uma variedade de outras imagens sobre a imagem raiz. A essência de uma imagem é na verdade uma coleção de arquivos. A estrutura camada por camada é um pouco semelhante ao Git e também um pouco semelhante às cebolas da vida.

3. O mecanismo de gravação e cópia da imagem.
Quando você especifica um contêiner para criar uma imagem por meio do comando docker run, um nível de sistema de arquivos de leitura e gravação vazio é criado na parte superior da imagem. Este nível de sistema de arquivos pode ser considerado como uma imagem temporária. tratada, e a imagem do modelo referida no comando pode ser chamada de imagem pai. O conteúdo da imagem pai é montado somente leitura. O contêiner lerá o conteúdo da imagem pai compartilhada. Todas as modificações feitas pelo usuário estão no sistema de arquivos e não terão nenhum impacto na imagem pai. Resumindo, uma imagem é um arquivo de modelo fixo que não muda. O contêiner é criado com base neste modelo. O contêiner fará algumas modificações com base no modelo. Essas modificações em si não afetarão o modelo. Também podemos criar mais contêineres baseado em modelos (espelhos)

Insira a descrição da imagem aqui

3. Modo de rede Docker
(1), modo bridge - net=bridge (padrão) especifica o mapeamento de porta por meio de -p.
(2) Modo Host--net=host O contêiner e o host compartilham o namespace Network.
(3), nenhum modo--net=none O contêiner possui um namespace de rede independente
Insira a descrição da imagem aqui

4. Comandos de uso do Docker

1. Comando de gerenciamento de imagem do Docker
(1), parâmetros de comando do Docker

instrução ilustrar
Construir Listar imagens
Imagens Ver imagem
Procurar Pesquisar imagens
puxar Baixar imagem
rmi ou rm Excluir imagem
marcação Marque a imagem
carregar Importe um pacote de imagens
salvar Exportar um pacote de imagens

(2) Comandos comuns do docker

Pesquisar imagem na janela de encaixe [image_name]

#Baixar a imagem docker pull [image_name]
#Ver as imagens do docker de imagem
#Ver as informações detalhadas da imagem docker inspecionar [image_id/image_name]
#Excluir a imagem docker rmi [image_name]
#Tag a imagem docker tag [docker_id] [image_name ]
#Exportar uma imagem docker save [image.tar.gz] [image_name]

2. Comandos de uso do contêiner Docker

instrução ilustrar
-eu Interativo
-t Tty aloca um pseudo terminal
-d Detach executa o contêiner em segundo plano
-e -env define variáveis ​​de ambiente
-p Lista de publicação publica a porta do contêiner no host
-nome String especifica o nome do contêiner
-h Hostname define o nome do host do contêiner
-ip String especifica o IP do contêiner, que só pode ser usado para redes personalizadas
-rede Conecte o contêiner a uma rede
-montar Mount anexa um sistema de arquivos a um contêiner
-v A ligação da lista de volumes monta um volume
-reiniciar Política de reinicialização quando o contêiner sair

(1),
descrição do comando docker run comando

(2) Os comandos comumente usados ​​são
#Baixar uma imagem nginx docker pull nginx
#Executar um contêiner (frontend) docker run -p 80:80 nginx
#Executar um contêiner (backend) docker -d -p 80:80 nginx
#Excluir contêiner ( É necessário parar antes de excluir) docker stop nginx &&docker rm nginx
#Especifique a porta e o nome do contêiner para o contêiner docker run -d -p 82:80 –name “nginx123” nginx
#Insira o contêiner após executar docker run -it –name “ nginx123” nginx /bin/bash
#Listar todos os contêineres: docker ps -a
#Exportar o contêiner como uma imagem Docker export [container_name] -o [container_name.tar]
#Exportar uma imagem docker import [container_name.tar] [image_name:versão ]
#Clean up Contêiner parado: docker container prune -f

5. Armazenamento Docker
(1), volume de dados volume de dados
(2), volume de dados dontainers contêiner de volume de dados (geral)
docekr fornece três maneiras de montar dados do host para os
volumes do contêiner: docker gerencia o sistema de arquivos do host Parte de (/ var/lib/docker/volumes) A ​​melhor maneira de salvar dados é
vincular montagens: monte arquivos ou diretórios em qualquer lugar do host no contêiner.

Comando de volume
1. docker volume create name #Create volume
2. docker volume ls #View volume
3. Crie um volume e monte-o no contêiner nginx
docker run -d -it -name “nginx-01” --mount src= nginx -vol,dst=/usr/share/nginx/html/ -p 80:80 nginx
4. Recursos do volume
1) Compartilhando dados entre vários contêineres em execução, vários contêineres podem montar o mesmo volume ao mesmo tempo
2). o contêiner for interrompido ou removido, o volume modificado ainda existirá
3). O volume será excluído somente quando o volume for explicitamente excluído
4). Armazene os dados do contêiner no host remoto ou outro armazenamento (indiretamente)
5). Ao migrar de um docker host para outro, pare o contêiner primeiro e depois faça backup do diretório do volume. O caminho é (/var/lib/docker/volumes/)

comando bind mounts
1. Primeiro crie o diretório que precisa ser compartilhado com o contêiner. Por exemplo: mkdir -p /opt/mounts/
2. Execute o contêiner
docker -run -d -it -name “nginx-bind” -p 80:80 --mount type=bind,src=/opt/mounts,dst=/usr/share/nginx/html nginx
3. Recursos de montagens de ligação
1) Compartilhamento de arquivos de configuração do host para o contêiner, o host /etc /resolv é montado por padrão .conf em cada contêiner para fornecer resolução DNS.
2) Compartilhe o código entre o ambiente de desenvolvimento e o contêiner no host docker, e o contêiner pode compartilhar diretamente o diretório de código.
3) Quando a estrutura de arquivos ou diretórios do host docker é consistente com a ligação e montagem exigida pelo contêiner.

6. Escrevendo dockerfile
1. Introdução ao dockerfile: Dockerfile é um arquivo de texto usado para construir uma imagem. Usar o comando docker image build no Docker irá ler o Dockerfile e colocar o aplicativo em contêiner.

2. Sintaxe básica do dockerfile

instrução ilustrar
DE Imagem básica, tudo começa daqui
MANUTENTOR Quem escreveu o espelho, nome + email
CORRER Comandos que precisam ser executados ao construir a imagem
ADICIONAR Passos, imagem do Tomcat, este pacote de descompressão do Tomcat!
DIRTRABALHO Diretório de trabalho do Mirror
VOLUME Diretório montado
EXPOR Configuração de porta exposta
DMC Especifique o comando a ser executado quando este contêiner for iniciado. Somente o último terá efeito e poderá ser substituído.
PONTO DE ENTRADA Especifique o comando a ser executado quando este contêiner for iniciado. Você pode anexar o comando
ONBUILD Ao construir um Dockerfile herdado, o comando ONBUILD será executado.
CÓPIA DE Semelhante ao ADD, copie nossos arquivos para o espelho
ENV Definir passagem de ambiente ao construir

Insira a descrição da imagem aqui

七、使用docker运行一个tomcat镜像

docker search tomcat #搜索tomcat镜像
Insira a descrição da imagem aqui

docker pull tomcat #下载tomcat
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
运行tomcat
docker run -it -d -p 8080:8080 tomcat

八、使用dockerfile写一个tomcat镜像

1、准备一个tomcat和jdk压缩包
Insira a descrição da imagem aqui

2、编写dockerfile
Vim dockerfile

FROM centos:7
MAINTAINER 彦祖强的[email protected]

ADD jdk1.8.0_191.tar.gz /usr/local/
ADD apache-tomcat-9.0.19.tar.gz /usr/local/

RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.19
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.19
ENV PATH $PATH:$JAVA_HOME/bin:$CLASSPATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOR 8080
CMD /usr/local/apache-tomcat-9.0.19/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.19/logs/catalina.out
Insira a descrição da imagem aqui

3. Crie a imagem
docker build -t tomcat9.
Insira a descrição da imagem aqui

Imagens Docker
Insira a descrição da imagem aqui

4. Execute a imagem
docker run -d -p 9090:8080 tomcat9
Insira a descrição da imagem aqui

Visite esta máquina http://ip:9090

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

5. Empacote a imagem
Docker save tomcat > /root/docker/tomcat9.tar.gz
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/m0_57207884/article/details/130185411
Recomendado
Clasificación