Revelando o véu do docker (teoria básica e instalação detalhada)
Prefácio
Este artigo descobrirá o véu do docker em torno dos seguintes aspectos:
- O que é o docker?
- Por que você precisa do docker?
- O conceito central do docker
O que é o docker?
Baseado no Linux, o docker é uma ferramenta de código aberto para a execução de aplicativos , que pode ser considerada uma máquina virtual leve. O logotipo da janela de encaixe é uma baleia (versão antiga do logotipo) carregando o contêiner.A nova versão do logotipo simplifica diretamente os detalhes e altera a cor, conforme mostrado abaixo.
Como você pode ver na imagem, a criação do docker e as intenções dos desenvolvedores. Máquina hospedeira de baleia, contêiner isolado em caixa de bloco (o contêiner de encaixe é introduzido posteriormente). O objetivo do docker: criar, enviar e executar qualquer aplicativo, em qualquer lugar. Especificamente, é através do gerenciamento do ciclo de vida dos componentes de aplicativos correspondentes, como empacotamento, liberação, implantação e operação, para atingir o objetivo de "empacotamento único, executado em qualquer lugar" no nível do componente de aplicativo.
Um exemplo é como desenvolver um software de aplicativo.Espero que ele possa ser usado em qualquer lugar, a qualquer hora e em qualquer sistema operacional, e que possa ser implementado com base no docker. Obviamente, para o docker, esse componente pode ser um aplicativo, também pode ser uma configuração ou até um sistema operacional completo.
Por que você precisa do docker?
De fato, o surgimento do docker é um grande benefício para os desenvolvedores. Imagine o desenvolvimento atual ou futuro de aplicativos ou software baseados na nuvem, sem o hardware subjacente, e os usuários precisam obter recursos relevantes a qualquer momento e em qualquer lugar, para que o docker possa fornecer essa solicitação.
A seguir, é apresentada uma comparação direta entre contêineres de encaixe e máquinas virtuais tradicionais
Características | Container Docker | Máquina virtual |
---|---|---|
Velocidade inicial | Segundo nível | Nível de minuto |
Perda de desempenho do computador | Quase nenhuma perda | Cerca de metade da perda |
Desempenho | Perto do nativo | Fraco |
Suporte do sistema | Milhares | Dezenas |
Isolamento | Limite de recursos | Completamente isolado |
O problema resolvido pelo núcleo do docker é usar contêineres para obter funções do tipo VM, para fornecer aos usuários mais recursos de computação com mais recursos de hardware salvos, e o docker é fácil de operar e também pode oferecer suporte à criação e implantação automatizadas flexíveis por meio dos arquivos de configuração do Dockerfile.
A seguir, mostramos a comparação entre o Docker e a arquitetura tradicional da máquina virtual:
Através da figura acima, verifica-se que a máquina virtual está isolada no nível do recurso físico.Em comparação com a máquina virtual, o Docker é baseado no isolamento no nível APP e o sistema operacional da máquina virtual é omitido, economizando parte dos recursos do sistema.
O daemon do Docker pode se comunicar diretamente com o sistema operacional principal e alocar recursos para cada contêiner do Docker; também pode isolar o contêiner do sistema operacional principal (por segurança) e isolar cada contêiner. A máquina virtual leva alguns minutos para iniciar e o contêiner do Docker pode iniciar em alguns milissegundos. Como não há sistema operacional secundário inchado, o Docker pode economizar muito espaço em disco e outros recursos do sistema.
Em resumo, a diferença entre uma máquina virtual e a janela de encaixe é que a máquina virtual precisa virtualizar os recursos de hardware por meio do hipervisor, e a janela de encaixe usa diretamente os recursos de hardware da máquina host, para que o isolamento da máquina virtual seja mais completo e a janela de encaixe O isolamento é o próximo.
O conceito central do Docker
1, imagem - imagem
Pode-se entender que é semelhante ao instantâneo em nossa máquina virtual e é a base para a criação de contêineres.Pode-se dizer que não há imagem nem contêineres.
2. Container-container
A instância em execução criada com base na imagem pode ser iniciada, parada e excluída. Cada recipiente é isolado e invisível um do outro.
3. Repositório do Warehouse
O local em que o espelho está salvo pode ser entendido como um local de armazenamento para o espelho. Você pode enviar sua própria criação ao armazém para facilitar o uso a qualquer hora, em qualquer lugar.
O servidor de registro do armazém (registro) é o local para armazenar o armazém, que contém vários armazéns, cada armazém armazena um tipo de imagem e usa diferentes tags (tags) para distinguir. Atualmente, o maior armazém público é o Docker Hub, que armazena um grande número de imagens para os usuários baixarem e usarem.
Aqui está um complemento para explicar a arquitetura do docker:
O Docker usa uma arquitetura cliente-servidor. Docker cliente e Docker daemon diálogo, o daemon concluir a construção, operação e distribuição de contentores Docker trabalho pesado. O cliente e daemon do Docker podem ser executados no mesmo sistema ou você pode conectar o cliente do Docker a um daemon do Docker remoto. Os clientes Docker e daemons usam APIs REST para se comunicar nos soquetes UNIX ou nas interfaces de rede.
Ícone da arquitetura:
Processo de instalação do Docker
O processo de instalação e implantação baseado no Linux / Centos7 é o seguinte:
Versão do sistema operacional: centos7.7
1. Implantação do ambiente
[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su
[root@docker ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@docker ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@docker ~]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@docker ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf #开启路由转发
[root@docker ~]# sysctl -p #加载路由转发功能
net.ipv4.ip_forward = 1
[root@docker ~]# systemctl restart network
2. Instale pacotes dependentes
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
...
更新完毕:
lvm2.x86_64 7:2.02.185-2.el7_7.2
作为依赖被升级:
device-mapper.x86_64 7:1.02.158-2.el7_7.2 device-mapper-event.x86_64 7:1.02.158-2.el7_7.2
device-mapper-event-libs.x86_64 7:1.02.158-2.el7_7.2 device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2
lvm2-libs.x86_64 7:2.02.185-2.el7_7.2
完毕!
Descrição:
O pacote yum-utils é instalado para fornecer uma unidade yum-config-manager, e o device-mapper-persistent-data e o lvm2 instalados ao mesmo tempo são usados para armazenar os dois pacotes de software necessários para o mapeamento do dispositivo.
3. Configure um repositório estável
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@docker ~]# ls /etc/yum.repos.d/ #查看是否加入了一个docker源
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo docker-ce.repo
4. Instale o mecanismo da janela de encaixe
[root@docker ~]# yum install -y docker-ce
...
已安装:
docker-ce.x86_64 3:19.03.8-3.el7
作为依赖被安装:
container-selinux.noarch 2:2.107-3.el7 containerd.io.x86_64 0:1.2.13-3.1.el7
docker-ce-cli.x86_64 1:19.03.8-3.el7
完毕!
5. Crie o diretório docker e configure o serviço de aceleração de imagem
[root@docker ~]# mkdir /etc/docker -p
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://5m9y9qbl.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://5m9y9qbl.mirror.aliyuncs.com"]
}
Descrição: tee command-write da entrada padrão para o arquivo e saída padrão, ou seja, copie os dados de entrada padrão para cada arquivo FILE e envie-os para a saída padrão ao mesmo tempo.
6. Abra o serviço e verifique a versão
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker.service
[root@docker ~]# docker -v
Docker version 19.03.8, build afacb8b
[root@docker ~]# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
Sumário
Este artigo apresenta principalmente o papel do docker, o compara com as características das máquinas virtuais tradicionais e o nível da arquitetura, depois fala sobre os três principais componentes do docker e, finalmente, fornece o processo de instalação do docker baseado no sistema operacional Centos7 no Linux.