Compartilhamento de tecnologia

Resumo do Docker

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Prepare o ambiente:

  • VMware17
  • Ubuntu18.04(LTS): https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1. Visualização do Docker


Documentos relacionados ao Docker:

  • endereço do site oficial do docker: https://www.docker.com/
  • endereço de documentação do docker: https://docs.docker.com/
  • armazém de imagens docker: https://hub.docker.com/

Docker feliz

1. O que é docker: é um mecanismo de contêiner de código aberto que pode gerenciar contêineres facilmente, e os contêineres são isolados uns dos outros usando um mecanismo de sandbox.

2. Qual problema o docker resolve: resolve o problema de migração do ambiente de software.

3. A diferença entre contêineres e máquinas virtuais:

  • Container: É uma abstração de uma aplicação (empacotando código e dependências), ocupando menos recursos, inicialização rápida, leve e flexível.
  • Máquina virtual: É uma abstração de hardware físico (transformar um servidor em vários servidores). Consome muitos recursos e é volumoso e poderoso.

imagem-20240706011000322

4. armazenamento do docker:

  • Diretório de montagem, exemplo: -v /宿主机目录:容器目录
  • Mapeamento de volume de dados, exemplo:数据卷:容器目录

5. Rede Docker: Crie uma rede personalizada para obter acesso ao nome do host como um nome de domínio estável. (Permite que contêineres na mesma rede se comuniquem entre si)

#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 
-v /app/rd1:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet --name redis01 
bitnami/redis

#从节点
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=slave 
-e REDIS_MASTER_HOST=redis01 
-e REDIS_MASTER_PORT_NUMBER=6379 
-e REDIS_MASTER_PASSWORD=123456 
-e REDIS_PASSWORD=123456 
--network mynet --name redis02 
bitnami/redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2. Instale o Docker


Este artigo é baseado na instalação do ambiente Ubuntu. Se você não tiver permissões, basta adicionar sudo na frente.

1. Desligue o firewall (não há necessidade de expor manualmente a porta para acesso externo posterior, o que é conveniente para teste)

sudo ufw disable

#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable
  • 1
  • 2
  • 3
  • 4
  • 5

2. Instale a janela de encaixe

#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc

#更新软件包
sudo apt-get update

#安装一些工具
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg-agent 
    software-properties-common

#安装docker
sudo apt install docker.io 

#验证dokcer是否安装成功
docker --version

#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now

#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3. Comandos comuns do Docker


imagem-20240706032721566

1. Gerenciamento de status do serviço docker:

  • systemctl status docker: Visualize o status de execução do docker
  • systemctl parar janela de encaixe: fechar janela de encaixe
  • systemctl iniciar janela de encaixe: iniciar janela de encaixe
  • systemcl reiniciar janela de encaixe: reiniciar janela de encaixe
  • systemctl enable docker: define o docker para iniciar automaticamente na inicialização

2. Gerenciamento de imagens Docker:

  • Imagem de pesquisa: nome da imagem de pesquisa do docker
  • Extraia a imagem: docker pull Nome da imagem: tag Se a tag não for especificada, a última será extraída
  • Ver imagens: imagens docker
  • Excluir imagem: docker rmi nome da imagem: tag

3. Gerenciamento de contêineres Docker:

  • Crie um contêiner: docker run -di --name=nome do contêiner nome da imagem: tag
  • Feche o contêiner: docker stop nome do contêiner
  • Inicie o contêiner: docker start nome do contêiner
  • Excluir contêiner: nome do contêiner docker rm
  • Veja o contêiner:
    • docker ps -a Visualize todos os contêineres, incluindo aqueles que não estão em execução
    • docker ps para visualizar contêineres em execução
  • Digite o contêiner: docker exec -it nome do contêiner/bin/bash

4. Volume de dados do Docker:

  • Volume de dados: É uma pasta gerenciada pelo docker.

  • O uso de volumes de dados: você pode vincular um volume de dados a um caminho em um contêiner para realizar a transferência automática bidirecional de arquivos entre o contêiner e o host.

    Coloque o arquivo no volume de dados do host: o docker sincronizará automaticamente o arquivo com o contêiner

    Se os arquivos no contêiner forem alterados: o docker os sincronizará automaticamente com o volume de dados do host.

  • Comandos de operação de volume de dados:

    Listar volumes de dados: docker volume ls

    Crie um volume de dados: docker volume crie nome do volume de dados

    Ver detalhes do volume de dados (caminho real): docker volume inspecionar nome do volume de dados

    Excluir volume de dados: docker volume rm nome do volume de dados

  • Crie o contêiner e vincule o volume de dados:

    docker run -di --name=nome do contêiner -v nome do volume de dados: caminho no nome da imagem do contêiner: tag

    docker run -di --name=nome do contêiner -v caminho no host: caminho no nome da imagem do contêiner: tag

    Nota: Todos os caminhos no parâmetro -v devem ser caminhos absolutos.

5. Backup de espelho:

  • Exportar imagem: docker save -o nome do arquivo nome da imagem
  • Carregue a imagem: docker load -i xxx.tar

4. Arquivo Docker


Documentação: https://docs.docker.com/reference/dockerfile/

Função Dockerfile: Crie imagens personalizadas.

Dockerfile é baseado em uma imagem básica e escreve uma série de instruções docker. Cada instrução constrói uma camada de imagem. Por meio dessas instruções, camada por camada, uma imagem de destino é finalmente construída.

Instruções comunsefeito
DEEspecifique o ambiente base da imagem
CORRERExecute o comando personalizado
CMDComando ou parâmetros de inicialização do contêiner
RÓTULOEtiquetas personalizadas
EXPOREspecifique a porta exposta
Ambientevariáveis ​​ambientais
ADICIONARAdicione arquivos à imagem
CÓPIA DECopiar arquivos para imagem
PONTO DE ENTRADAComando de inicialização fixa do contêiner
VOLUMEvolume de dados
DO UTILIZADOREspecifique usuários e grupos de usuários
TRABALHODIREspecifique o diretório de trabalho padrão
ARGEspecifique parâmetros de compilação

Exemplo:

#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar   #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]  #运行命令

# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. Orquestração de serviços


Orquestração de serviços ou orquestração de contêineres: gerencie contêineres em lotes de acordo com determinadas regras de negócios.

Docker Compose é uma ferramenta de orquestração para definir e executar vários contêineres Docker.

Vários contêineres podem ser iniciados com um comando. Resolve principalmente o problema de como gerenciar e orquestrar contêineres.

Existem três etapas para usar o Docker Compose:

  1. Use Dockerfile para definir o ambiente de execução (se você já possui um espelho, pode omitir esta etapa)
  2. usardocker-compose.ymlDefina os serviços que compõem a aplicação
  3. correrdocker-compose up -dIniciar aplicativo

Instale o docker-compose:

# 下载docker compose
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Se quiser desinstalar o docker-compose, você pode executar o seguinte comando:

# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
  • 1
  • 2

Comandos comuns para docker-compose:

# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!

#创建容器并后台启动
docker-compose up -d

#直接启动容器
docker-compose start

#其它命令:
docker-compose help # 查看帮助
docker-compose stop  # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Exemplo:

1. Crie o diretório docker-compose

mkdir ~/docker-compose
cd ~/docker-compose
  • 1
  • 2

2. Escrevadocker-compose.yamldocumento

version: "3.0"
services:
  redis:
    container_name: redis 
    image: redis:5.0
    ports:
      - 6379:6379
  nginx:
    container_name: nginx
    image: nginx:1.14.2
    ports:
      - 80:80
    volumes:
      - /root/volumes/nginx/html:/usr/share/nginx/html
  tomcat:
    container_name: tomcat
    image: tomcat:8.5.88
    ports:
      - 8080:8080
    volumes:
      - /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3. Comece

# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose

# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5